Sobes.tech
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 кайра түзүлгөндө, скролл позициясы туура сакталат жана калыбына келет.