그건 아마도 PagingSource 에 page number 처리를 처리를 제대로 하지 않고 있기 때문일 것 같습니다. 이게 원인이라면, 이건 refresh 기능에도 영향을 미칠 겁니다.
class MoviePagingSource(
val movieApiService: MovieApiService,
) : PagingSource<Int, DataType>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, DataType> {
try {
// Start refresh at page 1 if undefined.
val nextPage = params.key ?: 1
val response = ...
return LoadResult.Page(
data = response.movies,
prevKey = if (nextPage == 1) null else nextPage - 1,
nextKey = if (noMoreData) null else response.page + 1
)
} catch (e: Exception) {
return LoadResult.Error(e)
}
}
}
위의 예제 코드에서 마지막에 LoadResult.Page 부분 처리가 중요합니다. 만약 nextKey를 제대로 처리하지 않으면 님이 말씀하신 것과 같은 증상이 일어납니다. 더이상 처리할 데이터가 없다면 null을 리턴하시면 됩니다.