xlistview
来源:互联网 发布:专业音频测试软件 编辑:程序博客网 时间:2024/06/05 18:43
xlistview
package animtest.com.example.e531.xlistview_demo;
import android.os.AsyncTask;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.gson.Gson;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import animtest.com.example.e531.xlistview_demo.view.XListView;
/**
* 作业:在此基础上加上“多条目”显示的功能
* 判断条目的奇偶数
* 如果是奇数条,则展示 title(左面)与 star(右面) 字段的数据
* 如果是偶数条,则展示图片(ImageLoader获取图片(img字段))
*
*/
public class MainActivity extends AppCompatActivity {
private XListView xListView;
private MyAdapter adapter;
private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1";
//页数
private int pageIndex=1;
//操作的类型 1:下拉刷新 2:上拉加载
private int type=1;
private List<Result.DataEntity> datas=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找组件
xListView = (XListView) findViewById(R.id.xlv);
//设置支持下拉刷新
xListView.setPullRefreshEnable(true);
//设置支持上拉加载更多
xListView.setPullLoadEnable(true);
//设置刷新与加载更多的监听
xListView.setXListViewListener(new XListView.IXListViewListener() {
//刷新回调的接口
@Override
public void onRefresh() {
type=1;
//重新请求第一页的数据 10条数据
pageIndex=1;
String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
new MyTask().execute(url);
}
//加载更多回调的接口
@Override
public void onLoadMore() {
type=2;
pageIndex++;
//进行地址的拼接
String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
//执行异步请求
new MyTask().execute(url);
}
});
//执行请求
new MyTask().execute(url);
}
class MyTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... params) {
String result = "";
try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(20000);
connection.setReadTimeout(20000);
if(connection.getResponseCode()==200){
InputStream inputStream=connection.getInputStream();
result=StreamToString.streamToStr(inputStream,"utf-8");
}
} catch (Exception e) {
e.printStackTrace();
Log.e("zzz",e.getMessage().toString());
}
return result;
}
@Override
protected void onPostExecute(String s) {
Log.d("zzz","data:"+s);
//解析
Gson gson=new Gson();
Result result=gson.fromJson(s,Result.class);
if(type==1){//代表刷新
//如果是刷新的话
datas.clear();//清除原有的数据
datas.addAll(result.getData());//添加新的数据
setAdapter();
//关闭xlistview的头部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
xListView.stopRefresh();//关闭
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s=sdf.format(date);
xListView.setRefreshTime(s);//设置刷新时间
}
},1000);
}else if(type==2){//代表加载更多
//得到数据
datas.addAll(result.getData());//datas.addAll(0,result.getData());//将新请求的数据添加到集合的最前面
//设置适配器
setAdapter();
//关闭xlistview的底部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
xListView.stopLoadMore();
}
},1000);
}else{
}
}
}
public void setAdapter() {
if(adapter==null){
adapter=new MyAdapter(datas,MainActivity.this);
xListView.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
}
}
- XListView
- XListView
- Xlistview
- XListView
- xListView
- XListView
- xlistview
- xListView
- XlistView
- xlistview
- xlistview
- XListView
- xlistview
- xListview
- XListView
- XListView
- xlistview
- xlistview
- 第十三周项目1-验证算法1
- 网络流学习笔记(2)
- Hystrix使用说明,配置参数说明
- Zookeeper和dubbo的关系
- Fragment01
- xlistview
- mysql5.7 数据导入报 Error Code: 2006
- bzoj 4499: 线性函数 线段树
- Retrofit多线程断点下载
- vue组件-轮播(走马灯效果)
- 【Scikit-Learn 中文文档】内核岭回归
- Win32控制台项目添加显示输出窗口
- UrlLib库的相关用法
- 新东方副总裁徐健:人工智能时代如何实现教育升级?