Back to questions
Junior — Middle
71
Каким образом можно обеспечить сохранение позиции прокрутки в RecyclerView при пересоздании Activity?
Answer from AI
sobes.tech 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)
Если нужно более точное восстановление (например, с учетом смещения внутри элемента), можно сохранить Parcelable состояние LayoutManager:
// Сохранение
val layoutState = recyclerView.layoutManager?.onSaveInstanceState()
outState.putParcelable("layout_state", layoutState)
// Восстановление
val layoutState = savedInstanceState?.getParcelable<Parcelable>("layout_state")
recyclerView.layoutManager?.onRestoreInstanceState(layoutState)
Таким образом, при пересоздании Activity позиция прокрутки будет сохранена и восстановлена корректно.