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(); } } }
使用 Xlistview 展示网络请求数据
最新推荐文章于 2019-01-06 20:54:53 发布