ListView分页显示

时间:2024-11-15 20:35:49
出在:http://blog.****.net/tu_bingbing/article/details/13275107   
     当ListView要显示的数据过多时,为了更快的响应用户,这个时候ListView进行分页显示再合适只是了。
     ListView分页显示数据的原理事实上非常easy,当用户滑到ListView最后一项时,通知异步线程进行载入下一页的数据,下一页数据载入完毕时,调用设置好的Adapter的notifyDataSetChange()方法,ListView显示下一页的数据。
     如今有两个问题要解决,第一个问题要知道用户是否滑到了ListView的最后一项;第二个问题是怎样提示用户正在载入下一页的数据,让用户耐心等待。
     解决第一个问题,我们仅仅需自己定义ListView,让它实现OnScrollListener类监听ListView的滑动状态,以此来推断是否滑动到了最后一项
[java] view
plain
copyListView分页显示ListView分页显示
  1. @Override
  2. public void onScroll(AbsListView view, int firstVisibleItem,
  3. int visibleItemCount, int totalItemCount ) {
  4. if (getAdapter() == null){
  5. return ;
  6. }
  7. if (getAdapter().getCount() == 0){
  8. return ;
  9. }
  10. int lastItemIndex = firstVisibleItem + visibleItemCount;
  11. if (lastItemIndex >= totalItemCount){
  12. // 用户已经滑动到了ListView的最后一项
  13. }

     要解决第二个问题也是在onScroll()方法中来实现
[java] view
plain
copyListView分页显示ListView分页显示
  1. @Override
  2. public void onScroll(AbsListView view, int firstVisibleItem,
  3. int visibleItemCount, int totalItemCount) {
  4. if (getAdapter() == null){
  5. return ;
  6. }
  7. if (getAdapter().getCount() == 0){
  8. return ;
  9. }
  10. int lastItemIndex = firstVisibleItem + visibleItemCount;
  11. if (lastItemIndex >= totalItemCount && ! isLoading){
  12. addFooterView( footerView );//用来提示用户正在载入下一页的数据
  13. isLoading = true ;
  14. listener.loadData();
  15. }

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






很多其它0