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.