1.整体思路:
设置一个pageIndex记录当前页数,最开始设置为0;
设置一个int常量PAGE_SIZE定义每页的数据数目;
此处有一个需要注意的是:怎么通知后台你需要下一页,当后台有新的数据加入后,每页的数据内容会有改动,纯粹的传递第几页,会出现数据混乱的情况。此处根据后台的数据特性,我们使用标记获取到的最后一条数据,把获取到的最后一条数据的时间字段传递给后台,后台获取到后再自行处理,返回给我们正确不重复的新的一页数据。
2.上拉加载:
开始上拉操作,则同时开始刷新,获取到新的一页数据后,然后pageIndex加一,判断此list的size是否小于PAGE_SIZE,若小于则表示没有更多的新数据了,反之则有,同时结束本次刷新;
3.下拉刷新:
下拉则把pageIndex置为0,方便以后重新从0开始记录页数,获取到新的一页数据后,然后pageIndex加一,判断此list的size是否小于PAGE_SIZE,若小于则表示没有更多的新数据了,反之则有,同时结束本次刷新;
注:上拉与下拉在处理当前页数上有细微区别,需要注意!!!
4.给listview赋值:
listAdapter.initData(pageIndex, dataList)
private int mFirstPageIndex = 0;
protected List<T> mListData = new ArrayList<T>();
public void initData(int pageIndex, List<T> data) {
if (pageIndex == mFirstPageIndex) {
mListData.clear();
}
if (null != data) {
mListData.addAll(data);
}
this.notifyDataSetChanged();
}