リストビューの使用の際、再描画を行った後に、元の位置を変わらずに表示する方法です。
例えばリストビューの上から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);