package com.example.a09_xlistview_demo; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.example.a09_xlistview_demo.view.XListView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private List<DataDataBean.DataBean>list=new ArrayList<>(); //定義一個大的集合,,,裝當前頁面所有的數據 private XListView xListView; private Myadapter myAdapter; private int page_num = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xListView = (XListView) findViewById(R.id.x_list_view); //設置支持上拉還是下拉 xListView.setPullRefreshEnable(true); xListView.setPullLoadEnable(true); //監聽事件 xListView.setXListViewListener(this); getDataFromNet(); } private void getDataFromNet() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"; try { URL url=new URL(path); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode==200){ InputStream inputStream = connection.getInputStream(); String json=streamToString(inputStream,"utf_8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson=new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); list.addAll(dataDataBean.getData()); setAdapter(); //停止加載 xListView.stopLoadMore(); } }; asyncTask.execute(); } /** * 設置適配器 */ private void setAdapter() { if (myAdapter==null){ myAdapter=new Myadapter(MainActivity.this,list); xListView.setAdapter(myAdapter); }else { myAdapter.notifyDataSetChanged(); } } /** * 這是下拉刷新的時候自動調用的方法 * * 例如,,,下拉刷新的時候我們讓他請求下一頁的內容 */ @Override public void onRefresh() { page_num++; AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+page_num; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //設置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //獲取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson=new Gson(); DataDataBean dataBean = gson.fromJson(s, DataDataBean.class); //下拉刷新的數據需要添加在大集合的最前邊 list.addAll(0,dataBean.getData()); setAdapter(); //停止刷新 xListView.stopRefresh(); //System.currentTimeMillis()....當前時間的long類型的值 Date date=new Date(System.currentTimeMillis()); //格式化....yyyy-MM-dd HH:mm SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); //設置本次刷新的時間 xListView.setRefreshTime(simpleDateFormat.format(date)); } }; asyncTask.execute(); } /** * 這是上拉加載的時候調用的方法 * * 上拉加載更多......例如:讓他請求第一頁數據 */ @Override public void onLoadMore() { getDataFromNet(); } private String streamToString(InputStream inputStream, String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
xlistview上拉刷新和下拉加載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.