4
我有一個帶有ListView的片段,我希望ListView在保存和恢復片段時保持其滾動位置。通常這很簡單,只需在保存時調用ListView.getFirstVisiblePosition()並在恢復時調用ListView.setSelection()(ListView.setSelectionFromTop()(如果您想要)。滾動ListView到光標加載後的位置
但是,我正在使用加載程序,並且當活動啓動時,我的ListView未完全填充。如果我在onActivityCreated()期間設置了Selection(),那麼該列表將不會有任何內容滾動至此,並且該調用將被忽略。
我現在通過在將來某個時間發佈滾動來解決這個問題,但是這絕對不是理想的。我更喜歡它在數據加載完成後向右滾動。我幾乎在這裏做,但swapCursor()不刷新,它只是爲未來安排失效。
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
if (savedScrollPosition != null) {
Log.d(TAG, "loaded and scrolling to " + savedScrollPosition);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
list.setSelection(savedScrollPosition);
savedScrollPosition = null;
}
}, 100);
}
}
你知道任何滾動ListView的權利,因爲ListView完成填充數據嗎?
工作就像一個魅力。謝謝! – num1
很高興爲你效勞:) – Shafi
你在哪裏添加了這段代碼?你能否再解釋一下 - 我不確定我理解這裏發生了什麼。 – RightHandedMonkey