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에 해당하는 데이터만 리턴시키면 되지 않을까 생각이 드네요.