使用 Xlistview 展示网络请求数据

来源:互联网 发布:2g 3g 4g网络区别 编辑:程序博客网 时间:2024/06/05 04:23
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();        }    }  }