Junior — Middle
Kā nodrošināt ritināšanas pozīcijas saglabāšanu RecyclerView, kad aktivitāte tiek atkārtoti izveidota?
sobes.tech AI
Atbilde no AI
Lai saglabātu ritinājuma pozīciju RecyclerView, atkārtoti izveidojot Activity, jūs varat saglabāt un atjaunot LayoutManager stāvokli.
Piemērs LinearLayoutManager:
// Saglabāt pozīciju
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// Saglabāt Bundle, piemēram, onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)
// Atjaunot pozīciju onCreate vai onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Ja nepieciešama precīzāka atjaunošana (piemēram, ņemot vērā elementa iekšējo pārvietojumu), jūs varat saglabāt Parcelable stāvokli LayoutManager:
// Saglabāt
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Atjaunot
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Tādējādi, atkārtoti izveidojot Activity, ritinājuma pozīcija tiks pareizi saglabāta un atjaunota.