ListView 分页简单写法

前言

关于Android 端ListView分页的做法之前一直不懂,碰巧项目中遇到了,所以在这边记录下学习的成果。

  • 分页:当用户在ListView界面上的时候不会加载全部的数据,而是从服务端加载一部分数据,当用户滑动ListView到末端的时候再从服务器加载更多数据。

  • 接口介绍:OnScrollListener

// 静态属性
public static int SCROLL_STATE_IDLE = 0; // 空闲状态
public static int SCROLL_STATE_TOUCH_SCROLL = 1; // 滚动状态,并且手指在屏幕上
public static int SCROLL_STATE_FLING = 2;    //    滚动状态,手指已经离开了屏幕

// 抽象方法
public void onScrollStateChanged(AbsListView view, int scrollState); 
// ListView在状态改变的时候调用,用户在正常滑动的时候通常会执行三次(刻意滑动当listView停止的时候才将手离开屏幕执行两次)

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount); 
// ListView在滚动的时候会反复调用该方法,调用次数和listView的子项无关(屏幕只要滑动一点就会调用)
  • 设置成员属性:分页页码,默认1; 判断是否滑到底部的标记
 private int mPageNum = 1;
 private boolean isBottom;
  • 设置LIstView滑动监听器
mNewsListView.setOnScrollListener(new OnScrollListener() {

     @Override
     public void onScrollStateChanged(AbsListView view, int scrollState) {
         if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
             if (isBottom) {
                 // 下载更多数据
                 Toast.makeText(MainActivity.this, "正在加载",
                         Toast.LENGTH_SHORT).show();        
                 //加载数据的方法代码.......
                 //这里面的代码通常是根据mPageNum加载不同的数据
                 // 对mPageNum处理: mPageNum++

             }
         }
     }

     @Override
     public void onScroll(AbsListView view, int firstVisibleItem,
             int visibleItemCount, int totalItemCount) {
         if (firstVisibleItem + visibleItemCount == totalItemCount) {
             // 说明:
             // fistVisibleItem:表示划出屏幕的ListView子项个数
             // visibleItemCount:表示屏幕中正在显示的ListView子项个数
             // totalItemCount:表示ListView子项的总数    
             // 前两个相加==最后一个说明ListView滑到底部
             isButtom = true;
         }else{
             isButtom = false;
         }
     }
 });
  • 当ListView到达底部的时候,服务器没有更多数据可以加载。
    继续用手指滑动屏幕,因为没有更多数据,所以屏幕ListView不会动,这个时候onScrollStateChanged方法会执行,但是onScroll方法不会执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值