2016-11-14 1 views
2

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.

+0

avez-vous vérifié que votre 'mBundleRecyclerViewState' n'est vraiment pas' null'? –

+0

@VladMatvienko Oui, j'ai vérifié, mBundleRecyclerViewState n'est pas nul lorsque je reviens de l'activité C à l'activité B. –

+0

Renseignez-vous à nouveau votre liste après être revenu à l'activité? –

Répondre

0

état dans le Restaurez 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); 
} 
+0

J'ai essayé, mais je ne travaillais pas Même l'état de défilement n'est pas restauré lors de la navigation vers l'activité A qui fonctionnait auparavant –

+0

Toujours pas de travail bro –

+0

Voici le lien pour compléter le code: https://github.com /zayid/Blur_Wallpaper/blob/master/app/src/main/java/com/whackyard/whatsappwalls/MainActivity.java –