Sobes.tech
Junior — Middle

Kuidas tagada kerimise positsiooni säilitamine RecyclerView-s tegevuse uuesti loomisel?

sobes.tech AI

Vastus AI-lt

Selleks, et säilitada RecyclerView kerimise asukoht tegevuse uuesti loomisel, saate salvestada ja taastada LayoutManageri oleku.

Näide LinearLayoutManageri jaoks:

// Asukoha salvestamine
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()

// Salvestada Bundle'i, näiteks onSaveInstanceState sees
outState.putInt("scroll_position", scrollPosition)

// Taastada asukoht onCreate või onRestoreInstanceState sees
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)

Kui on vaja täpsemat taastamist (näiteks, arvestades elemendi sees olevat nihke), saate salvestada Parcelable oleku LayoutManageri:

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

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

Nii et, tegevuse uuesti loomisel, säilitatakse ja taastatakse kerimise asukoht õigesti.