上拉与下拉加载判断是否联网

//初始化DisplayImageOptions
    static {
        options = new DisplayImageOptions.Builder()
                .showImageOnFail(R.mipmap.ic_error)
                .showImageForEmptyUri(R.mipmap.ic_empty)
                .showImageOnLoading(R.mipmap.loading)
                .build();
    }
    private static DisplayImageOptions options;
    private XListView xListView;
    private List list;
    //定义一个页码变量记录用户刷新到第几页了
    private int pageIndex = 1;
    //定义一个变量去记录用户操作行为(例如:上拉、下拉)
    private boolean flag;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        xListView = (XListView) findViewById(R.id.xlist);
        //设置是否可以上下拉加载
        xListView.setPullLoadEnable(true);
        //让主类去implements实现XListView.IXListViewListener
        xListView.setXListViewListener(this);
        //调用加载网络资源的方法
        if(isOnline()){
            //有网,联网请求数据
            init();
        }else {
            //弹出提示对话框
            showDialog();
        }
    }
    //加载网络资源
    public void init(){
        try {
            readNetContent("http://apis.juhe.cn/cook/query.php?key=e3c3dd5597dd875ff29c665a 25b740251&pn="+pageIndex+"&rn=8&menu="+ URLEncoder.encode("西红柿","utf-8")+"");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //加载网络资源
    public void readNetContent(String path){
        new AsyncTask(){
            @Override
            protected void onPostExecute(String s) {
                if(s == null){
                    return;
                }
                Gson gson = new Gson();
                BigMenu bigMenu = gson.fromJson(s, BigMenu.class);
                list = bigMenu.getResult().getData();
                //将数据绑定到适配上
                if(myAdapter ==null){
                    myAdapter = new MyAdapter(list);
                    xListView.setAdapter(myAdapter);
                }else {
                    myAdapter.loadMore(list,flag);
                }
            }
            @Override
            protected String doInBackground(String... params) {
                try {
                    URL url = new URL(params[0]);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    if(connection.getResponseCode() == 200){
                        InputStream is = connection.getInputStream();
                        String result = readStream(is);
                        return result;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute(path);
    }
    //xlistview的适配器
    class MyAdapter extends BaseAdapter {

        private final List bigList;

        public MyAdapter(List list) {
            this.bigList = list;
        }
        //定义一个方法不断获取新的资源   并把新的资源添加到原有的数据集合
        //并判断是上拉   还是下拉     保证最新的资源在用户眼前
        public void loadMore(List dataBeen, boolean flag){

            for (BigMenu.ResultBean.DataBean da:dataBeen) {
                if(flag == true){
                    bigList.add(0,da);
                }else {
                    bigList.add(da);
                }
            }
            //刷新适配器
            notifyDataSetChanged();
        }
        @Override
        public int getCount() {
            return bigList.size();
        }
        @Override
        public Object getItem(int position) {
            return bigList.get(position);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            //判断从converview不为空
            if(convertView == null){
                //装换布局
                convertView = View.inflate(MainActivity.this,R.layout.item_main,null);
                viewHolder = new ViewHolder();
                //找到控件
                viewHolder.title = (TextView) convertView.findViewById(R.id.titleName);
                viewHolder.pic = (ImageView) convertView.findViewById(R.id.pic);
                convertView.setTag(viewHolder);
            }else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            //为控件赋值
            viewHolder.title.setText(bigList.get(position).getTitle());
            ImageLoader.getInstance().displayImage(bigList.get(position).getSteps().get(0).getImg(),viewHolder.pic,options);
            return convertView;
        }
    }
    //viewholder类
    class ViewHolder{
        private TextView title;
        private ImageView pic;
    }
    //装换字符流的方法
    public String readStream(InputStream is){
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int len;
            byte[] bytes = new byte[1024];
            while((len = is.read(bytes))>0){
                baos.write(bytes,0,len);
            }
            return baos.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    //下拉时会被执行的方法
    @Override
    public void onRefresh() {
        pageIndex++;
        flag=true;
        //改变加载的页数再次获取资源
        init();
        //停止下拉刷新
        xListView.stopRefresh(true);
    }
    //上拉时会被执行的方法
    @Override
    public void onLoadMore() {
        pageIndex++;
        flag=false;
        //改变加载的页数再次获取资源
        init();
        //停止加载更多
        xListView.stopLoadMore();
    }
   
    public boolean isOnline() {
        //得到一个连接管理者
        ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        //得到联网信息
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        //判断设备是否联网
        return (networkInfo != null && networkInfo.isConnected());
    }
   
    private void showDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("网络请求失败");
        builder.setNegativeButton("取消",null);
        builder.setPositiveButton("查看网络设置", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //跳转网络设置界面
                startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
            }
        });
        builder.create().show();
    }

重要权限:<</span>uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值