지난 번에 EndlessRecyclerViewScrollListener
의 기본적인 사용 방법에 대해 포스팅 한데 이어, 이번에는 사용 시 주의할 점을 한가지 공유하고자 합니다.
보통 앱에서 이 리스너를 사용하는 이유는, 서버나 DB에서 더 불러올 데이터가 있기 때문입니다. 그런데 가끔씩은, 불러오는 데이터 자체를 모두 refresh하는 경우가 있는데요. 다음과 같은 상황을 생각해보면 됩니다.
- 앱에서 맛집을 검색함. 스크롤을 내리면서 계속 뜨는 맛집들을 보는데, 너무 필터링이 안되어 있다는 것을 깨달음.
- 지역으로 필터를 걸었음. 그랬더니, 전체 데이터가 뷰에서 없어지고, 필터링 된 데이터가 새로불러와짐.
이런 경우라면, 앱에서 스크롤 state은 어떻게 처리할까요? 별도로 state을 처리해주지 않는 이상, 1번에서 이미 많이 내렸던 스크롤의 상태를 앱에서는 유지할 것입니다. 그렇다면 어떤 문제가 발생할까요?
바로 2번에서 데이터를 더 불러오지 못한다는 문제가 발생합니다.
앱에서 인지하는 최하단 스크롤은 1번에서 이미 많이 내렸던 스크롤입니다. 2번 데이터가 다시 뜬 상황에서, 가장 하단부로 스크롤을 내리더라도, 앱에서는 최하단에 왔다고 인지하지 못합니다. 즉, 가장 하단부에 왔음에도 scrollListener
가 작동하지 않는 것입니다.
때문에, 만약 전체 데이터를 refresh하는 상황이 있다면, scroll의 상태로 reset해주는 과정이 필요합니다.
다행히도, endlessRecyclerViewScrollListener에서는 스크롤을 reset하는 함수를 가지고 있습니다.
scrollListener.resetState(); | cs |
Refresh하는 부분에 이 한줄만 삽입해주면, 스크롤 상태도 같이 리셋되어 이상 없이 사용할 수 있습니다.
'Developer > Android, Java' 카테고리의 다른 글
[안드로이드] ArrayList<Object> 인텐트 넘기는 방법 (284) | 2019.05.22 |
---|---|
[안드로이드] ScrollView 안에 RecyclerView 을 넣을 수 있나요? (281) | 2019.05.22 |
[안드로이드] RecyclerView에서 항목 삭제하기 (리스트에서 삭제처리) (298) | 2019.05.21 |
[안드로이드] Firebase Cloud Messaging (FCM) 푸시 메시지에 따라 화면 이동하기 (285) | 2019.05.21 |
[안드로이드] EndlessRecyclerViewScrollListener 적용하기 (293) | 2019.05.21 |
댓글