您的位置:首页 > 其它

监听ListView滚动到最底部

2015-05-30 09:19 281 查看

监听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。这个是不确定的。有待考证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: