不少数据都是通过ListView绑定数据源实现的,比如mop、人人的实现都是这样的,但是现在我们的需要是当我们的ListView展现了已有的数据库的数据之后,用户下拉ListView时,需要实现更新数据,这该怎么实现呢?
采用滚动事件(OnScrollListener )监听就可以实现此了,代码片段如下:
private int lastItem;//listview当前显示页面的最后一条数据
private int firstItem;//listview当前显示页面的第一条数据
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
DebugUtil.debug("onScrollStateChanged");
//当滚动停止且滚动的总数等于数据的总数,既上拉去加载
if (lastItem == count && scrollState == SCROLL_STATE_IDLE) {
getdata(); //加载数据
return;
}
//当往上拉时更新数据,将data清空然后去重新加载
if (firstItem == 0 && scrollState == SCROLL_STATE_IDLE) {
getdata();//这边去更新数据即可,子线程啥的
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
lastItem = firstVisibleItem + visibleItemCount;//计算出lastitem的值
firstItem = firstVisibleItem;//同样拿出lastitem的值
}