Junior — Middle
Ako zabezpečiť zachovanie pozície posúvania v RecyclerView pri opätovnom vytvorení Activity?
sobes.tech AI
Odpoveď od AI
Ak chcete zachovať pozíciu posúvania v RecyclerView pri opätovnom vytvorení Activity, môžete uložiť a obnoviť stav LayoutManageru.
Príklad pre LinearLayoutManager:
// Uloženie pozície
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// Uloženie do Bundle, napríklad v onSaveInstanceState
outState.putInt("scroll_position", scrollPosition)
// Obnovenie pozície v onCreate alebo onRestoreInstanceState
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Ak je potrebné presnejšie obnovenie (napríklad s prihliadnutím na posun vo vnútri prvku), môžete uložiť stav Parcelable LayoutManageru:
// Uloženie
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Obnovenie
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Týmto spôsobom bude pri opätovnom vytvorení Activity pozícia posúvania správne uložená a obnovená.