• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
百分百
http://www.qrw100.com
博客园    首页    新随笔    联系   管理    订阅  订阅

监听ListView滚动到最底部

监听ListView的滚动可以用两个东西:

  • ListView.onScrollStateChanged (本文讲解这个listener的使用)
  • 在OnGestureListener类里面的 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)   事件

SDK的Sample里面的ApiDemos里面的List9 和 List 13介绍了 ListView.OnScrollListener的使用。
List9介绍的是ListView.OnScrollListener的 onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 方法。
List13介绍的是ListView.OnScrollListener的 onScrollStateChanged(AbsListView view, int scrollState) 方法,使用说明如下:

ListView.setOnScrollListener(new OnScrollListener(){
        @Override   
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        switch (scrollState) {
            case OnScrollListener.SCROLL_STATE_IDLE:
            Log.v("已经停止:SCROLL_STATE_IDLE");
                break;           
            case OnScrollListener.SCROLL_STATE_FLING:
                Log.v("开始滚动:SCROLL_STATE_FLING");
                break;           
            case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                Log.v("正在滚动:SCROLL_STATE_TOUCH_SCROLL");
                break;
            }   
        }    
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                   
        }});
    }

 

监听ListView滚动到最底部使用 onScrollStateChanged(AbsListView view, int scrollState) 方法,代码大致如下:

// 监听listview滚到最底部
        mIndexList.setOnScrollListener(new OnScrollListener() {
            @Override   
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState) {
                    case OnScrollListener.SCROLL_STATE_IDLE: // 当不滚动时
                        // 判断滚动到底部              
                        if (view.getLastVisiblePosition() == (view.getCount() - 1)) {
                            isLastisNext++;             
                        }             
                        break;       
                }   
            }    
            @Override   
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
               
            }});
        }

我使用这个发现两个问题:

  • 在模拟器上,如果使用鼠标的滚轮来滚动时执行 onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)  方法,不执行 onScrollStateChanged(AbsListView view, int scrollState)  方法。只有触摸往下滑动时,才执行onScrollStateChanged(AbsListView view, int scrollState) 方法。有待考证。
  • SCROLL_STATE_TOUCH_SCROLL一定执行,然后下面可能执行SCROLL_STATE_FLING,也可能执行SCROLL_STATE_IDLE。这个是不确定的。有待考证。
posted @ 2011-11-03 16:41  爱尚美  阅读(1056)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3