Sobes.tech
Junior — Middle

Hoe kun je de scrollpositie in RecyclerView behouden bij het opnieuw maken van de Activity?

sobes.tech AI

Antwoord van AI

Om de scrollpositie in RecyclerView te behouden bij het opnieuw maken van een Activity, kun je de staat van de LayoutManager opslaan en herstellen.

Voorbeeld voor LinearLayoutManager:

// Positie opslaan
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()

// Opslaan in Bundle, bijvoorbeeld in onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)

// Positie herstellen in onCreate of onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)

Als een meer nauwkeurige herstelling nodig is (bijvoorbeeld rekening houdend met de verschuiving binnen het element), kun je de Parcelable-stand van de LayoutManager opslaan:

// Opslaan
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)

// Herstellen
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)

Op deze manier wordt bij het opnieuw maken van de Activity de scrollpositie correct opgeslagen en hersteld.