마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

페이징3 사용시 api 파라미터에 page 받는것이 없는경우

0 추천
페이징3 예제들을 보면 api의 파라미터로 page나 아니면 한번에 몇개를 호출할지 갯수를 넘겨주던데

api의 파라미터에 그런 받는 것이 없는 경우 페이징3 사용해서 자체적으로 나눌 수 있나요?

아니면 자체 페이징을 구현해야하는건가요?

 

get의 api url이 api/get_data 라고 되어있고 @Query파라미터가 그냥 api_key만 있는경우

page나 count등 파라미터를 받는 것 없이 되어있어, response가 30개정도가 한꺼번에 내려오는데요

이걸 10개씩 쪼개주려고 paging3를 사용하려했으나 여태 사용해오면서 항상 prevkey, nextkey를 통해 페이지설정해주고

그 페이지 키값을 파라미터로 넘겨줬었는데 이경우는 안되는건가요?
수원통학러 (3,570 포인트) 님이 2022년 11월 23일 질문

1개의 답변

0 추천

API를 이용할 경우, 서버에서 페이징 처리를 할 수 있어야 합니다. 왜냐하면 서버에서 페이징 지원이 안되면 모든 데이터를 한꺼번에 가져오게 됩니다.
RoomDB를 사용하게 되면 SQL query에 페이징을 구현할 수 있는 기능(top, limit 등등)이 존재하기 때문에, Room를 이용해서 자체 페이징이 가능한 걸로 압니다.

포인트는 데이터소스가 되는 곳에서 페이징 처리를 할 수 있어야 한다는 것입니다.

님과 같이 한꺼번에 데이터가 내려오는 경우는 API 호출 결과를 Room에  집어넣어서 사용하거나,
별도로 구현하고 싶다면, 아래의 링크에 있는 페이징 라이브러리의 데이터소스를 구현하시면 될 것 같아 보이네요.

https://developer.android.com/topic/libraries/architecture/paging/v3-paged-data#pagingsource

val response = backend.searchUsers(query, nextPageNumber)

 searchUsers에 해당하는 부분을 페이징 처리가 되는 님의 구현함수로 대체 하시면 될 것 같습니다. 서버에서 데이터를 받아서 메모리에 저장하고, 메모리에서 nextPageNumber에 해당하는 데이터만 리턴시키면 되지 않을까 생각이 드네요.

spark (225,780 포인트) 님이 2022년 11월 23일 답변
...