개발 일기

RecyclerView Scroll Position 복원 ? 본문

Client/안드로이드

RecyclerView Scroll Position 복원 ?

이건욱

해당 블로그를 참고했습니다.

 

Restore RecyclerView scroll position

You might have had the problem where a RecyclerView loses the scroll position when your Activity/Fragment is re-created. This usually…

medium.com

RecyclerView에 대해서 Activity/Fragment가 재 생성이 됬을 때 스크롤을 잃어 버리는 문제가 있었습니다.

그 이유는 데이터는 비동기적으로 가져오기 때문에 RecyclerView가 layout이 필요할 때 없어서 실패하는 문제였습니다.

 

근데 이제는 RecyclerView에 새로운 API을 통해서 준비될 때 까지 Layout 복원을 block을 시킬수 있습니다.

 

올바른 위치를 보장하는 방법은 여러가지가 있지만 그 중 최선의 방법으로 선https://developer.android.com/reference/androidx/recyclerview/widget/MergeAdapter택 된것은 data를 항상 캐싱을 해놔서 첫번째 layout이 넘어가기 전에 Adapter에 data를 넣는 방법입니다.

 

'recyclerview:1.2.0-alpha02'의 해결책은 세가지의 복구 옵션(StateRestorationPolicy)을 가지는 새로운 Adapter의 함수를 통해서 해결할수가 있습니다. 

 

ALLOW

Default 방법으로 써 RecyclerView에 상태를 복구하는 것을 즉각적으로 움직입니다.

 

PREVENT_WHEN_EMPTY

adapter 데이터가 비어있지 않을 때 RecyclerView 상태를 복구합니다.

만약에 기본적으로 헤더나 로딩바가 들어있어야 한다면 MergeAdapter을 통해서 모든 Adapter가 준비가 되었을 때 상태를 복구 시킵니다.

 

PREVENT

모든 복구 상태를 ALLOW or PREVENT_WHEN_EMPTY가 설정이 되기 전까지 연기합니다.

 

adapter.stateRestorationPolicy = PREVENT_WHEN_EMPTY

'Client > 안드로이드' 카테고리의 다른 글

zoom animation ?  (0) 2020.05.14
Move views using a fling animation ?  (0) 2020.05.12
애니메이션 뷰 이동?  (0) 2020.05.11
Animation View Hide ?  (0) 2020.05.04
Property animation  (0) 2020.04.28
Comments