새소식

Android

RecyclerView의 Loading Progress 보여주기

  • -

RecyclerView에 아이템을 추가할 때, 데이터를 불러오고 있다는 표시를 해야할 때 사용하는 방법.


처음에는 https://gist.github.com/nesquena/d09dc68ff07e845cc622 을 사용했었다.



그렇지만 Loading Progress를 보여주는데 있어서 시행착오를 겪다가 다른 방법을 찾아보게되었다.


https://stackoverflow.com/questions/30681905/adding-items-to-endless-scroll-recyclerview-with-progressbar-at-bottom


위 링크에서는 EndlessRecyclerOnScrollListener를 사용하는데 문제가 있다고 한다.


item을 추가할 때 해당 item에 대한 정보를 알수 없고 개수를 세는데 어려움이 있다고...


저대로 적용을 하면 무리없이 item이 추가로 불러와질때 프로그레스바가 표시된다.




다만 이걸 그대로 적용할때 주의할 점이 있었다.


1. setAdapter() 를 실행하기전에 setLayoutManager() 를 실행해야 한다. 그렇지 않으면 Adapter의 생성자에서 getLayoutManager()하게 되면 null을 리턴받게 된다.


2. handler에서 아이템을 추가할 때 이런 메시지를 받을 수 있는데

Cannot call this method in a scroll callback.

이럴 때는 아이템을 추가하는 for문 밖에서 notifyDataSetChanged()를 호출하면 된다.

for문 각 행동마다 notifyItemInserted()를 호출할 때, 저 메시지를 받을 수 있다.

더욱이 정상적으로 Loading Progress를 보여주지 못할 수 있다.


이런 방법으로 무사히 Adapter에 추가로딩표시를 추가해줄 수 있게되었다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.