RecyclerVIew를 사용하다 보면 아이템안으로 들어가거나 다른 프래그먼트,액티비티를 띄우는 경우가 발생한다.
이후 다시 되돌아오면 리사이클러뷰의 위치가 항상 처음으로 바뀌어있어서 불편함을 겪는 경우가 있다.
예전에는 position을 저장하여 복구하거나 savedInstanceState
에 값을 저장하여 사용하곤 했는데 불편함이 많았던 터라 기능이 개발되었다.
조금 더 쉽게 Scroll을 복구 할수있게되었다.
private fun initRecyclerView() {
testAdapter = TestAdapter()
binding.testRecyclerView.apply {
adapter = testAdapter
layoutManager = LinearLayoutManager(requireContext())
testAdapter.stateRestorationPolicy =
RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
}
옵션으로 3가지가 있다.
Allow : 항상 현재 어댑터의 상태를저장. (default)
Prevent_when_empty : 어댑터에 아이템이 1개 이상일때만 상태를 저장하고 복구한다.
Prevent : 다른 옵션을 주지않는한 현재 어댑터를 저장하지않는다.