xListView分页加载数据
2016-01-21 10:09
423 查看
android开发中有的时候不可能一次性把所有的数据加载进去所以必须要分页加载数据,所以xlistview是很多开发中常用的一种方式进行分页加载数据。网络上很容易找到类库,但是分页加载的倒是比较少见,所以我就分页加载数据的demo粘出来方便大家使用。
(1)代码demo 分页加载数据,默认加载第一页,每次加载5条数据
( 3 )获取上次加载的时间
( 3 )注:我是自己手动添加的数据可能比较麻烦,一般服务器都会做分页的所以就可以直接调接口,不用自己在做数据的处理了。
这里写链接内容
(1)代码demo 分页加载数据,默认加载第一页,每次加载5条数据
import java.util.ArrayList; import com.example.xlistviewdemo.adapter.mAdapter; import com.example.xlistviewdemo.model.Data; import com.example.xlistviewdemo.util.DataUtil; import com.example.xlistviewdemo.view.XListView; import com.example.xlistviewdemo.view.XListView.IXListViewListener; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; /** * 分页加载数据,默认加载第一页,每次加载5条数据 */ public class MainActivity extends Activity implements IXListViewListener { private XListView listview; private ArrayList<Data> data; private int currentPage; private int total; private int totalPage; private String mMoreUrl; private ArrayList<Data> list = new ArrayList<Data>(); private mAdapter adapter; private ArrayList<Data> dataMore; private int current_page; private int cPage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (XListView) findViewById(R.id.listview); listview.setPullLoadEnable(true); listview.setPullRefreshEnable(true); listview.setRefreshTime(DataUtil.getCurrentTime()); listview.setXListViewListener(this); initData(); loadingData(1, 5, false, true); } /** * 进行分页加载数据,每次默认加载5条数据 */ private void loadingData(int currentPage, int pageSize, boolean isMore, boolean isLoad) { if ("没有加载的数据了".equals(mMoreUrl)) { listview.setPullRefreshEnable(true); listview.stopLoadMore(); // ToastUtil.showToast(mContext, Constants.NO_MESSAGE); Toast.makeText(MainActivity.this, "没有加载的数据了", 0).show(); } else { if (!isMore) { list.clear(); // 不加载更多的情况下(默认获取前五条数据) for (int i = 0; i < 5; i++) { list.add(data.get(i)); } if (list != null) { adapter = new mAdapter(MainActivity.this, list); listview.setAdapter(adapter); } } else { // 当多余5条 之后走加载更多的操作 dataMore = new ArrayList<Data>(); for (int i = (currentPage - 1) * 5; i < currentPage * 5; i++) { dataMore.add(data.get(i)); } if (list != null) { list.addAll(dataMore); adapter.notifyDataSetInvalidated(); } } if (isLoad) { listview.stopRefresh(); } else { listview.stopLoadMore(); } if (currentPage == totalPage) { // 表示没有加载的数据了 mMoreUrl = "没有加载的数据了"; } else { currentPage++; cPage = currentPage; } } } private void initData() { data = new ArrayList<Data>(); for (int i = 0; i < 100; i++) { Data d = new Data(); d.setId("1" + i); d.setName("xlistviewDemo" + i); data.add(d); } total = data.size(); totalPage = total / 5; } @Override public void onRefresh() { currentPage = 1; mMoreUrl = null; loadingData(1, 5, false, true); } @Override public void onLoadMore() { loadingData(cPage, 5, true, false); } }
( 3 )获取上次加载的时间
import java.text.SimpleDateFormat; import java.util.Date; public class DataUtil { /** * 格式化时间 */ private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat("MM-dd HH:mm"); } }; /** * 获取时间并格式化 */ public static String getCurrentTime() { Date nowTime = new Date(); String nowTimeStr = dateFormater.get().format(nowTime); return nowTimeStr; } }
( 3 )注:我是自己手动添加的数据可能比较麻烦,一般服务器都会做分页的所以就可以直接调接口,不用自己在做数据的处理了。
这里写链接内容
相关文章推荐
- Android Webview实现图片、文件上传及启动相机功能
- C++学习 【3.1】 程序设计初步---算法、结构、赋值语句
- 在Swift中编写 watchOS 2 Hello World 程序
- golang内存分配
- Excel图表制作(二):滚动条实现动态图表
- maven+spring+springmvc+hibernate+easyui的真实项目经历
- Nginx配置统计流量带宽请求及记录实时请求状态的方法
- AirPrint:无交互的后台打印实现
- dll is in timestamps but is not known in guidmapper… 错误
- Excel图表制作(二):下拉菜单实现动态图表
- PageBean方式实现分页效果 泽0715
- 当电脑内存比较小的时候,小于4G,安装32bit还是64bit呢
- android java 闭包
- java中判断字符串是否为数字的三种方法
- C语言学习之数组指针和指针数组
- object c 对象和普通的c对象之间的转化
- cmd下常用命令汇总
- 2016猴年春联集锦
- Spring的ApplicationEvent的使用
- PhotoView开源项目剖析