スクロール/フリングのたびにListViewを再調整しようとしています。再調整とは、ListViewの一番上の項目がListViewの一番上に揃えられるように再調整することを意味します。切り取られた場合は、再調整されて完全に表示されるまでスムーズに下にスクロールする必要があります。
スクロールリスナーを実装しました:
firstRowListView.setOnScrollListener(new OnScrollListener() {
private boolean correcting = false;
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView arg0, int scrollState) {
if (!correcting && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
correcting = true;
firstRowListView.smoothScrollToPosition(firstRowListView.getFirstVisiblePosition());
correcting = false;
}
}
}
});
(見やすくするために、重要な部分だけを残しました)。スムーズにスクロールすると(フリングなし)は正常に機能しますが、リストをフリングしても再調整されません。LogCatは、onScrollStateChangeメソッドが「通常の」スクロールを実行するときと同じ方法で実行されることを教えてくれますが。
これはなぜですか。また、フリング後でもListViewを再調整するにはどうすればよいですか。