Sobes.tech
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.