J'ai 3 activités: A -> B -> CAndroid: RecyclerView GridLayoutManager - Retour à la position de défilement ne fonctionne pas correctement
Dans l'activité B, je suis peuplant à l'aide de GridlayoutManager RecyclerView. Je veux sauver l'état quand je défile à l'activité C naviguer et restaurer l'état quand je vais défiler revenir à l'activité B d'activité C.
private RecyclerView mImgList;
private GridLayoutManager mRecyclerGridMan;
private final String KEY_RECYCLER_STATE = "recycler_state";
private Parcelable mListState = null;
private static Bundle mBundleRecyclerViewState;
.
@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);
}
}
Mais cela fonctionne quand je presse le bouton de retour de l'activité B et aller à l'activité A, et la navigation Retour à l'activité B de l'activité A.
avez-vous vérifié que votre 'mBundleRecyclerViewState' n'est vraiment pas' null'? –
@VladMatvienko Oui, j'ai vérifié, mBundleRecyclerViewState n'est pas nul lorsque je reviens de l'activité C à l'activité B. –
Renseignez-vous à nouveau votre liste après être revenu à l'activité? –