Comment enregistrer la position de défilement de RecyclerView dans Android?
J'ai Recycleur de vue qui fixe à l'intérieur de SwipeRefreshLayout. Aussi, avoir la possibilité d'ouvrir chaque élément dans une autre activité.
Après le retour à la Recycleur j'ai besoin faites défiler jusqu'à l'élément sélectionné, ou à la précédente Y.
Comment faire?
Oui, j'ai googlé, trouvé des articles dans StackOverFlow à propos de l'enregistrement de l'instance de gestionnaire de présentation, comme celui-ci: RecyclerView store /restauration de l'état entre les activités.
Mais, il ne m'aide pas.
Mise à JOUR
Droit maintenant, j'ai ce genre de résolution de problème, mais, de plus, cela ne fonctionne pas.
private int scrollPosition;
...//onViewCreated - it is fragment
recyclerView.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(llm);
data = new ArrayList<>();
adapter.setData(getActivity(), data);
recyclerView.setAdapter(adapter);
...
@Override
public void onResume() {
super.onResume();
recyclerView.setScrollY(scrollPosition);
}
@Override
public void onPause() {
super.onPause();
scrollPosition = recyclerView.getScrollY();
}
Oui, j'ai essayé de scrollTo(int, int) - ne débite pas de travail.
Maintenant, j'ai essayé juste de défilement, par exemple, Y = 100, mais il n'a pas de défilement du tout.
source d'informationauteur DefaultXYZ
Vous devez vous connecter pour publier un commentaire.
Sauvegarder l'état actuel de la position de la vue @onPause:
Restaurer la position de défilement @onResume:
manière ou d'une autre peut être @onPause:
restaurer @onResume:
Beaucoup de ces réponses semblent être plus compliquer.
Le LayoutManager prend en charge
onRestoreInstanceState
hors de la boîte, donc il n'est pas nécessaire d'enregistrer les positions de défilement etc. La méthode intégrée permet d'économiser pixel perfect positions.exemple de fragment de code (null vérification etc retiré pour plus de clarté):
puis il suffit d'appeler
une fois que vos données ont été rattachés à votre
RecyclerView
L'utilisateur de votre recycleur vue linearlayoutmanager pour obtenir la position de défilement
et lors de la restauration utilisez le code suivant
Espère que cela vous aide
Vous pouvez utiliser
scrollToPosition
ousmoothScrollToPosition
pour faire défiler à toute poste en RecyclerView.Si vous voulez faire défiler jusqu'à poste en adaptateuralors que vous auriez à utiliser l'adaptateur
scrollToPosition
ousmoothScrollToPosition
.