您的位置:首页 > 移动开发 > Android开发

Android - listview未滚动触发onScroll

2016-12-21 16:37 288 查看
说明:

listview未滚动触发onScroll

解决:

利用OnScrollListener中的onScrollStateChanged方法中的scrollState

public void onScrollStateChanged(AbsListView view, int scrollState);


该方法有两个入参,第二个参数scrollState有三种状态:

public static int SCROLL_STATE_IDLE = 0;            //结束滚动
public static int SCROLL_STATE_TOUCH_SCROLL = 1;    //触摸滚动
public static int SCROLL_STATE_FLING = 2;           //手指离开屏幕后的滚动状态


此时我们可将焦点定位到 SCROLL_STATE_IDLE,将滚动到底部的判断和处理放在结束滚动之后。

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case SCROLL_STATE_IDLE:
boolean toBottom = view.getLastVisiblePosition() == view.getCount() - 1;
if (toBottom && !isLoading && !isFinish) {
//...
}
break;
}


这样就能操控onScroll的触发了。

总结:

onScroll 只有在scrollState等于1和2的时候调用。

其中1是手指没有离开屏幕的滑动,2是手指离开了屏幕的滑动,这两种状态的滑动onScroll一直被调用

0有两种情况:

1、手指不离开滑动中停止,然后离开屏幕会出现0

2、滑动过程中手指离开但是屏幕继续滑动自然停止后是0

再scrollState为0的时候不会调用onScroll

以上都自己打印log,手指操作一下就能理解了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: