본문 바로가기

Android

Android recyclerView state save 안드로이드 리사이클러뷰 상태 저장 (onSaveInstanceState, onRestoreInstanceState)

반응형

안드로이드 리사이클러 뷰를 사용하다 보면 스크롤 중인 상태를 저장하는 방법에 대해서 고민을 안할 수 가 없다. 고민끝에 position 값을 저장해 두었다가 scrollToPosition으로 맞춰볼까 했지만 너무 인위적인 방법인거 같다는 지울 수 없었다.


그렇게 찾다가 발견한 방법!! onSaveInstanceState를 이용하여 상태를 저장하는 방법을 사용해 보기로 했다.


1. 리사이클러 뷰 상태 저장

Parcelable recyclerViewState;


recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();


LayoutManager를 불러와 Parcelable 변수에 상태를 Bundle형태롤 저장해 놓기!!


2. 리사이클러 뷰 상태 불러오기

if(recyclerViewState != null)
recyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);


이런 식으로 불러오면 스크롤 상태가 저장되는 것을 확인 할 수 있다.


Fragment간의 이동에서 상태를 저장, 하위 Activity에서의 상태 저장 등 다양한 상황에서 사용이 가능할 것 같다.


마지막으로 Android Developer에서 제공해주는 레퍼런스 URL

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#onRestoreInstanceState(android.os.Parcelable)


반응형