因此,我有一個EditText,我在其上設置了onEditorActionListener,即在用戶輸入文本並按下enter/search之後,它將獲取詳細信息並相應地填充回收視圖。無法使用LayoutManager恢復RecyclerView中的滾動位置
現在爲了節省配置更改的狀態我已經寫了下面的代碼 -
Parcelable stateList;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Saving instance of the state in Parcelable stateList
stateList = recyclerView.getLayoutManager().onSaveInstanceState();
outState.putParcelable(RETAIN_STATE, stateList);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if(savedInstanceState!=null) {
stateList = savedInstanceState.getParcelable(RETAIN_STATE);
recyclerView.getLayoutManager().onRestoreInstanceState(stateList);
}
}
但是當我運行這一點,並且旋轉屏幕的回收視圖不會恢復從stateList狀態parcelable。
我使用MVP,所以我在演示者的回調中設置適配器。
當我們點擊屏幕旋轉後的鍵盤上的輸入/搜索時,我能夠保留狀態,所以我在onRestoreInstanceState()中嘗試了這種黑客攻擊,但我認爲應該有更好的方法去做這個。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if(savedInstanceState!=null) {
//The hack!
et_search.onEditorAction(EditorInfo.IME_ACTION_SEARCH);
stateList = savedInstanceState.getParcelable(RETAIN_STATE);
recyclerView.getLayoutManager().onRestoreInstanceState(stateList);
}
}
讓我知道是否有更多所需的信息。 在此先感謝。
是的,我正在尋找恢復的意見滾動位置。 – hsm59