ListView上拉刷新数据的实现

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

发表评论