public class MainActivity extends AppCompatActivity {
private XListView xlv;
private int pageIndex=1;
private String urlpart="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=";
private String url=urlpart+pageIndex;
private MyAdapter adapter;
private List<Result.DataBean> data=new ArrayList<>();
//操作类型 1:刷新操作 2:加载更多的操作
private int operType=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找控件
xlv = findViewById(R.id.xlv);
//对xlistview进行设置
xlv.setPullLoadEnable(true);//上拉加载更多
xlv.setPullRefreshEnable(true);//下拉刷新
//设置接口
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
//刷新时,重新请求第1页的数据
pageIndex=1;
url=urlpart+pageIndex;
//重新赋值
operType=1;
MyTask myTask=new MyTask();
myTask.execute(url);
}
@Override
public void onLoadMore() {//加载更多
//页数增加
pageIndex++;
url=urlpart+pageIndex;
//重新赋值
operType=2;//加载更多
Log.d("zzz","loadMore:"+url);
MyTask task=new MyTask();
task.execute(url);
}
});
//进行网络请求
MyTask myTask=new MyTask();
myTask.execute(url);
}
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.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.setRequestMethod("GET");
if(urlConnection.getResponseCode()==200){
//获取数据
InputStream inputStream = urlConnection.getInputStream();
String s = StreamToString.streamToStr(inputStream, "utf-8");
Log.d("zzz","---:"+s);
return s;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
Gson gson=new Gson();
Result result = gson.fromJson(s, Result.class);
//data = result.getData();
if(operType==1){//代表刷新操作
data.clear();//清空原有的集合数据
}
//增加新的数据集合到原来的集合对象中
data.addAll(result.getData());
setAdapter();
if(operType==1){
xlv.stopRefresh();//关闭头布局
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String refreshTime = sf.format(date);
xlv.setRefreshTime(refreshTime);//设置刷新时间
}else{
xlv.stopLoadMore();//关闭尾布局
}
}
}
public void setAdapter(){
if(adapter==null){
adapter = new MyAdapter(data,MainActivity.this);
xlv.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
}
}