Junior — Middle
Πώς μπορεί να διασφαλιστεί η διατήρηση της θέσης κύλισης στο RecyclerView κατά την αναδημιουργία της δραστηριότητας;
sobes.tech AI
Απάντηση από AI
Για να διατηρήσετε τη θέση κύλισης στο RecyclerView κατά την αναδημιουργία της δραστηριότητας, μπορείτε να αποθηκεύσετε και να επαναφέρετε την κατάσταση του LayoutManager.
Παράδειγμα για LinearLayoutManager:
// Αποθήκευση θέσης
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// Αποθήκευση σε Bundle, για παράδειγμα στο onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)
// Επαναφορά της θέσης στο onCreate ή στο onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Εάν χρειάζεται πιο ακριβής επαναφορά (π.χ., λαμβάνοντας υπόψη την μετατόπιση μέσα στο στοιχείο), μπορείτε να αποθηκεύσετε την κατάσταση Parcelable του LayoutManager:
// Αποθήκευση
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Επαναφορά
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Έτσι, κατά την αναδημιουργία της δραστηριότητας, η θέση κύλισης θα αποθηκευτεί και θα επαναφερθεί σωστά.