6

我正在使用smoothScrollBy()滚动到ListView. 我希望在完成滚动以将其与用户用手指滚动时触发ListView的当前事件集成时收到通知。onScrollStateChanged()

目前,我正在使用Timer在平滑滚动持续时间后 100 毫秒运行的 a,但这不像我希望的那样由事件驱动。

4

1 回答 1

2

如果您已经为您的列表视图实现了 OnScrollListener,您可以观察 ScrollState 何时发生变化。在调用 smoothScrollBy() 时使用全局布尔值 (isScrolling) 设置为 true,然后在 OnScrollListener 注册 SCROLL_STATE_IDLE 的 ScrollState 时将其设置为 false。

sidebar1.smoothScrollToPositionFromTop(currentPosition, 0, 500);
isScrolling = true;

sidebar1.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
        isScrolling = false;
    }

}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount) {

}
});
于 2011-10-06T16:37:14.223 回答