0
我有一個包含RecyclerView的片段。當我從別的地方回片段,我做如何獲取滾動的RecyclerView位置
if(null!=savedInstanceState) {
mScrollPosition = savedInstanceState.getInt(ITEM_POSITION);
mRecyclerView.scrollToPosition(mScrollPosition);
}
,但現在我不知道該怎麼把裏面onSaveInstanceState
:
@Override
public void onSaveInstanceState(Bundle bundle){
super.onSaveInstanceState(bundle);
Log.d(TAG, "onSaveInstanceState");
mScrollPosition=mRecyclerView.getScrollPosition();//???
bundle.putInt(NITEM_POSITION,mScrollPosition);
}
沒有mRecyclerView.getScrollPosition()
。
更新
測試事實證明,使用mRecyclerView.scrollToPosition
不夠精細,保證流暢的用戶體驗之後。在物品視圖足夠高的情況下,scrollToPosition(ofFirstVisibleItem)
可以離開。那麼是否有更好的解決方案呢?
雖然你有點回答了這個問題,它原來的假設是錯誤的。使用scrollToPosition實際上並不會將視圖返回到它留下的位置:如果項目足夠高,則用戶非常清楚該位置已經移動。那麼有沒有更好的方式來做到這一點,而不是使用適配器位置? – learner
試試這個http://panavtec.me/retain-restore-recycler-view-scroll-position/ – HellCat2405
非常感謝。它看起來完全像我所需要的,但我不知道在哪裏放什麼。對不起,但我是在那個級別:)。例如,代碼看起來不像我的片段。而且有很多部分。我知道這有點多,但你介意放哪裏放什麼?我相信這裏的其他人也會很感激。 – learner