リストビューに戻るときにスクロール位置を維持/保存/復元する 質問する

リストビューに戻るときにスクロール位置を維持/保存/復元する 質問する

前の画面に戻る前にユーザーがスクロールできるロングがありますListView。ユーザーがこれをListView再度開いたときに、リストが以前と同じポイントまでスクロールされるようにします。これを実現する方法について何かアイデアはありますか?

ベストアンサー1

これを試して:

// save index and top position
int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());

// ...

// restore index and position
mList.setSelectionFromTop(index, top);

説明:

ListView.getFirstVisiblePosition()一番上の表示されているリスト項目を返します。ただし、この項目は部分的にスクロールされて見えなくなる場合があり、リストの正確なスクロール位置を復元するには、このオフセットを取得する必要があります。したがって、は一番上のリスト項目のListView.getChildAt(0)を返しView、次にView.getTop() - mList.getPaddingTop()の上端からの相対オフセットを返しますListView。次に、 のスクロール位置を復元するには、必要な項目のインデックスと、 の上端からのオフセットを指定して をListView呼び出し、その上端の位置を決定します。ListView.setSelectionFromTop()ListView

おすすめ記事