6

smoothScrollBy()の特定の位置にスクロールするために使用していListViewます。ユーザーが指でスクロールしたときに発生するListView現在のイベントと統合するために、スクロールが完了したときに通知を受け取りたいと思います。onScrollStateChanged()

現在Timer、スムーズスクロールの継続時間の100ミリ秒後に実行されるを使用していますが、それは私が望むほどイベント駆動型ではありません。

4

1 に答える 1

2

リストビューに OnScrollListener を実装している場合は、ScrollState がいつ変化するかを監視できます。SmoothScrollBy() を呼び出すときに true に設定されたグローバル ブール値 (isScrolling) を使用し、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 に答える