我正在使用smoothScrollBy()
滚动到ListView
中的特定位置。我希望在ListView
完成滚动时收到通知,将其与当用户用手指滚动时触发的当前onScrollStateChanged()
事件进行整合。
目前我正在使用在平滑滚动的持续时间后运行100毫秒的Timer
,但这不是我想要的事件驱动。
答案 0 :(得分: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) {
}
});