不少数据都是通过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的值 }