Junior — Middle
Activity кайра түзүлгөндө RecyclerViewдеги сүрүү ордун кантип сактап калуу керек?
sobes.tech AI
AIден жооп
RecyclerView-деги скролл позициясын Activity кайра түзүлгөндө сактап калуу үчүн, сиз LayoutManagerдин абалын сактап жана калыбына келтире аласыз.
Мисал үчүн LinearLayoutManager:
// Позицияны сактоо
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val scrollPosition = layoutManager.findFirstVisibleItemPosition()
// Bundleга сактоо, мисалы onSaveInstanceState ичинде
outState.putInt("scroll_position", scrollPosition)
// Позицияны onCreate же onRestoreInstanceState ичинде калыбына келтирүү
val position = savedInstanceState?.getInt("scroll_position") ?: 0
recyclerView.scrollToPosition(position)
Эгер так калыбына келтирүү керек болсо (мисалы, элементтин ичинде жылдырмасын эске алуу менен), LayoutManagerдин Parcelable абалын сактай аласыз:
// Сактоо
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Калыбына келтирүү
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Ошентип, Activity кайра түзүлгөндө, скролл позициясы туура сакталат жана калыбына келет.