ListView分页显示

来源:互联网 发布:ios手游模拟器 mac 编辑:程序博客网 时间:2024/06/03 20:54
  当ListView要显示的数据过多时,为了更快的响应用户,这个时候ListView进行分页显示再合适不过了。
     ListView分页显示数据的原理其实很简单,当用户滑到ListView最后一项时,通知异步线程进行加载下一页的数据,下一页数据加载完成时,调用设置好的Adapter的notifyDataSetChange()方法,ListView显示下一页的数据。
     现在有两个问题要解决,第一个问题要知道用户是否滑到了ListView的最后一项;第二个问题是如何提示用户正在加载下一页的数据,让用户耐心等待。
     解决第一个问题,我们只需自定义ListView,让它实现OnScrollListener类监听ListView的滑动状态,以此来判断是否滑动到了最后一项
     
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. @Override  
  2. public void onScroll(AbsListView view, int firstVisibleItem,  
  3.              int visibleItemCount, int totalItemCount ) {  
  4.   
  5.       if (getAdapter() == null){  
  6.              return ;  
  7.      }  
  8.        
  9.       if (getAdapter().getCount() == 0){  
  10.              return ;  
  11.      }  
  12.        
  13.       int lastItemIndex = firstVisibleItem + visibleItemCount;  
  14.       if (lastItemIndex >= totalItemCount){  
  15.              // 用户已经滑动到了ListView的最后一项  
  16.      }  
  17.        

     要解决第二个问题也是在onScroll()方法中来实现
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. @Override  
  2. public void onScroll(AbsListView view, int firstVisibleItem,  
  3.              int visibleItemCount, int totalItemCount) {  
  4.   
  5.       if (getAdapter() == null){  
  6.              return ;  
  7.      }  
  8.        
  9.       if (getAdapter().getCount() == 0){  
  10.              return ;  
  11.      }  
  12.        
  13.       int lastItemIndex = firstVisibleItem + visibleItemCount;  
  14.       if (lastItemIndex >= totalItemCount && ! isLoading){  
  15.             addFooterView( footerView );//用来提示用户正在加载下一页的数据  
  16.              isLoading = true ;  
  17.              listener.loadData();  
  18.      }  
  19.        

当监听到用户滑动到最后一项时,添加footerView,并通知进行数据加载。
     下面是一个简单的例子源码


0 0