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에 추가로딩표시를 추가해줄 수 있게되었다.