본문 바로가기

나의 플랫폼/안드로이드

[Android] AndroidX Paging 사용 시 내가 겪은 부분

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Paging Library는 정말 편하고 잘 만들어져 있지만,
처음 사용하면서 겪게된 부분을 공유하고자 글을 쓴다.

 

## 간략 내용

  1. setInitialLoadSizeHint와 setPageSize 사이즈를 제법 넉넉하게 줘라.
  2. DataSource.Factory에서 DataSource 객체를 꼭 생성해라.
  3. DataSource객체를 참조할때는 DataSource.Factory객체를 통해서만 해라.

## 내가 겪은 내용

  1. setInitialLoadSizeHint와 setPageSize 사이즈를 제법 넉넉하게 줘라.
    • 당연히 Paging Library는  RecyclerView와 사용할텐데,
    • 사이즈를 너무 좁게 잡으면 PagedListAdapter에서 loadAfter를 호출 되기 전에
    • 모든 데이터를 가져왔다고 인식 하는 현상이 발생 한다.
    • 열심히 ScrollUp 해도 loadAfter가 불러와지지 않는다.
  2. DataSource.Factory에서 DataSource 객체를 꼭 생성해라.
    • RecyclerView를 refresh하기 위해 DataSource의 invalidate함수를 이용할 텐데
    • 아무런 동작도 발생하지 않는다.
    • invalidate를 하더라도, DataSource.Factory에서 같은 DataSource객체가 넘어오므로,
    • 변경이 없다고 판단하여 아무 동작도 일어나지 않는 것으로 보임.
  3. DataSource객체를 참조할때는 DataSource.Factory객체를 통해서만 해라.
    • 2번과 비슷한 내용이지만, invalidate같은 함수로 갱신을 할 경우,
    • DataSource.Factory에서 새로운 DataSource객체를 생성 한다.
    • 따라서, DataSource를 참조해서 사용하고 싶으면
    • DataSource.Factory에서 새로운 DataSource를 만들때 마다 할당해줘야 한다.

 

 

샘플소스는 Android Architecture Components에서 보시면 좋다.
https://github.com/android/architecture-components-samples/tree/master/PagingWithNetworkSample

 

android/architecture-components-samples

Samples for Android Architecture Components. . Contribute to android/architecture-components-samples development by creating an account on GitHub.

github.com