ListViewの現在地と再配置 | set firstposition | Android

スポンサーリンク

リストビューの使用の際、再描画を行った後に、元の位置を変わらずに表示する方法です。

例えばリストビューの上から20個目のアイテムを表示中にadapterセットで再描画し、再度、20個目のアイテムを初期状態で表示させるということです。

スポンサーリンク

現在地の取得

現在地の取得には getFirstVisiblePosition を用います。getSelectedPositionであるとか、カスタム側からトリガーで取得するというわけではありません。この方法が一番容易です。

getFirstVisiblePositionによって一番上に表示中のリストビューアイテムのポジションナンバーを取得します。

ListViewの再描画

ListViewのアイテムに変更を加えて再描画を行います。何もしなければ通常通りポジションナンバーは0で表示されます。

再描画前の現在地を設定

setSelectionを用います。setSelectionはリストビューの一番上に表示するナンバーを指定することになりますからgetFirstVisiblePositionによって取得した値を入れればよいわけです。

以上を簡単にまとめますと、下記のコードとなります。

サンプルコード

int s  = listView.getFirstVisiblePosition();
adapter = new CustomListAdapter(activity, childItems);
listView.setAdapter(adapter);
listView.setSelection(s);