Junior — Middle
Kako osigurati očuvanje pozicije skrolovanja u RecyclerView prilikom ponovnog kreiranja Activity?
sobes.tech АИ
Одговор од АИ
Da biste sačuvali poziciju skrolovanja u RecyclerView prilikom ponovnog kreiranja Activity-ja, možete sačuvati i obnoviti stanje LayoutManager-a.
Primer za LinearLayoutManager:
// Čuvanje pozicije
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// Čuvanje u Bundle, na primer u onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)
// Obnavljanje pozicije u onCreate ili onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Ako je potrebna preciznija obnova (na primer, uzimajući u obzir pomeraj unutar elementa), možete sačuvati Parcelable stanje LayoutManager-a:
// Čuvanje
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Obnavljanje
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Na ovaj način, prilikom ponovnog kreiranja Activity-ja, pozicija skrolovanja će biti sačuvana i pravilno obnovljena.