前の画面に戻る前にユーザーがスクロールできるロングがあります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