---------------------------------------------------oncreate及全局变量
private XListView xListView;
private int pageIndex=1;
private int operType=1;//操作类型 1:刷新 2:加载更多操作
private String myurl="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
private ListViewAdapter listViewAdapter;
private List<ResultData.DataBean> datas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xListView = findViewById(R.id.xlv);
datas=new ArrayList<>();
//初使化
initXlv();
//请求网络数据
requestNetData();
}
----------------------------------------------------------请求网络加载数据的方法
private void requestNetData() {
new MyTask().execute(myurl);
}
---------------------------------------------------------AsyncTask请求,重写两个方法
class MyTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url=new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
if(urlConnection.getResponseCode()==200){
InputStream inputStream = urlConnection.getInputStream();
String s = streamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson=new Gson();
ResultData resultData = gson.fromJson(s, ResultData.class);
//选取出来的列表要显示的数据
List<ResultData.DataBean> data = resultData.getData();
if(operType==1){//代表刷新操作
datas.clear();//清空集合
}
//添加一个集合数据
datas.addAll(data);
setXLvAdapter();
if(operType==1){
//关闭头部视图
xListView.stopRefresh();
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sdf=new SimpleDateFormat("MM-dd HH:mm:ss");
String time = sdf.format(date);
//设置刷新时间
xListView.setRefreshTime(time);
}else{
//关闭底部视图
xListView.stopLoadMore();
}
}
}
-------------------------------------------------------------数据设置适配器
//设置适配器
public void setXLvAdapter(){
if(listViewAdapter==null){
listViewAdapter = new ListViewAdapter(datas,MainActivity.this);
xListView.setAdapter(listViewAdapter);
}else{
listViewAdapter.notifyDataSetChanged();//刷新
}
}
--------------------------------------------------------------Gson转成string的方法
private String streamToString(InputStream stream) {
StringBuilder sbuilder=new StringBuilder();
String str;
BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
try {
while ((str=reader.readLine())!=null){
sbuilder.append(str);
}
} catch (Exception e) {
e.printStackTrace();
}
return sbuilder.toString();
}
----------------------------------------------------------设置上拉下拉,重写两个方法
private void initXlv() {
//1.设置它支持的模式
xListView.setPullLoadEnable(true);//支持上拉加载
xListView.setPullRefreshEnable(true);//支持下拉刷新
//2.设置上下拉刷新回调接口
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新时回调
operType=1;
pageIndex=1;
myurl="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
@Override
public void onLoadMore() {//加载更多时回调
operType=2;
pageIndex++;
myurl="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
});