安卓:RecyclerView GridLayoutManager - 恢复滚动位置不正常工作
我有3个活动: 甲 - >乙 - “ç安卓:RecyclerView GridLayoutManager - 恢复滚动位置不正常工作
在活动B,我使用RecyclerView的GridlayoutManager填充。我要保存的滚动状态,当我浏览到活动C和恢复的滚动状态时,我从活动C.
private RecyclerView mImgList;
private GridLayoutManager mRecyclerGridMan;
private final String KEY_RECYCLER_STATE = "recycler_state";
private Parcelable mListState = null;
private static Bundle mBundleRecyclerViewState;
回到活动B。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
。
@Override
protected void onPause()
{
super.onPause();
mBundleRecyclerViewState = new Bundle();
mListState = mImgList.getLayoutManager().onSaveInstanceState();
mBundleRecyclerViewState.putParcelable(KEY_RECYCLER_STATE, mListState);
}
。
@Override
protected void onResume()
{
super.onResume();
if (mBundleRecyclerViewState != null) {
mListState = mBundleRecyclerViewState.getParcelable(KEY_RECYCLER_STATE);
mImgList.getLayoutManager().onRestoreInstanceState(mListState);
}
}
但是,当我从活动B按后退按钮,进入到活动A,并从活动A.导航回活动B
在onRestoreInstanceState恢复状态()
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
// Retrieve list state and list/item positions
if(state != null)
mListState = mBundleRecyclerViewState.getParcelable(KEY_RECYCLER_STATE);
}
这个工程
我试过了,但没有工作,甚至滚动状态也没有恢复,当导航到活动A到B,这是工作之前 –
仍然不工作的兄弟 –
以下是完整的代码链接:https://github.com /zayid/Blur_Wallpaper/blob/master/app/src/main/java/com/whackyard/whatsappwalls/MainActivity.java –
你有没有检查过你的'mBundleRecyclerViewState'确实不是'null'? –
@VladMatvienko是的,我检查了,当我从活动C回到活动B时,mBundleRecyclerViewState不为空。 –
你回到活动后再次填充你的列表吗? –