使用 Xlistview 展示网络请求数据

public class MainActivity extends AppCompatActivity {


    //设置变量
    private int type = 1;
    private int index = 1;
    private XListView xlv1;

    private String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private List<Data.DataBean> list = new ArrayList<>();

    private myadpter adpter;
    private ByteArrayOutputStream baos;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xlv1 = (XListView) findViewById(R.id.xlv);
        //设置允许下拉刷新
        xlv1.setPullRefreshEnable(true);
        //设置允许上拉加载
        xlv1.setPullLoadEnable(true);
        //实例化适配器
        adpter = new myadpter();
        //设置适配器
        xlv1.setAdapter(adpter);


        xlv1.setXListViewListener(new XListView.IXListViewListener() {
            //下拉刷新会调用此方法
            @Override
            public void onRefresh() {

                type = 1;
                new myasyntask().execute(path);

            }

            //加载更多会调用此方法
            @Override
            public void onLoadMore() {

                type = 2;
                index++;
                //调用asyntask方法
                new myasyntask().execute(path);
            }
        });

        //调用asyntask方法
        new myasyntask().execute(path);


    }

    class myasyntask extends AsyncTask<String, String, String> {
        /**
         * 做网络请求
         * @param params
         * @return
         */
        @Override
        protected String doInBackground(String... params) {
            try {

                URL url = new URL(params[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                urlConnection.setRequestMethod("GET");
                urlConnection.setConnectTimeout(5000);
                int code = urlConnection.getResponseCode();
                if (code == 200) {
                    InputStream stream = urlConnection.getInputStream();
                    baos = new ByteArrayOutputStream();
                    //以byte数组的形式
                    byte[] b = new byte[1024 * 1024];
                    int len;
                    while ((len = stream.read(b)) != -1) {

                        baos.write(b, 0, len);
                    }

                    return baos.toString();
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
            return baos.toString();

        }

        /**
         * 解析数据
         * @param s
         */
        @Override
        protected void onPostExecute(final String s) {
            super.onPostExecute(s);
            //Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
            Gson gs = new Gson();
            Data data = gs.fromJson(s, Data.class);

            if (type == 1) {
                //清空集合
                list.clear();
                //刷新适配器
                adpter.notifyDataSetChanged();
                //添加数据
                list.addAll(data.getData());


                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //关闭下拉刷新
                        xlv1.stopRefresh();
                        //系统时间
                        Date date = new Date(System.currentTimeMillis());
                        //格式
                        SimpleDateFormat ad = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        //把当前时间添加到格式中
                        String format = ad.format(date);

                        xlv1.setRefreshTime(format);
                    }
                }, 2000);

            } else if (type == 2) {
                //添加数据
                list.addAll(data.getData());
                //刷新适配器
                adpter.notifyDataSetChanged();
                //线程
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //关闭底部的上拉加载视图--延迟关闭
                        xlv1.stopLoadMore();
                    }
                }, 2000);
            }

            //Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
        }
    }

  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值