From 63f460b7cb3404146ff76f1658075a0cc8f84dff Mon Sep 17 00:00:00 2001 From: zhye Date: Mon, 28 Feb 2022 23:56:40 +0900 Subject: [PATCH] Fix paging source key --- .../codelabs/paging/data/GithubPagingSource.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/android/codelabs/paging/data/GithubPagingSource.kt b/app/src/main/java/com/example/android/codelabs/paging/data/GithubPagingSource.kt index 890cdba4..16b7ccb2 100644 --- a/app/src/main/java/com/example/android/codelabs/paging/data/GithubPagingSource.kt +++ b/app/src/main/java/com/example/android/codelabs/paging/data/GithubPagingSource.kt @@ -33,11 +33,18 @@ class GithubPagingSource( private val query: String ) : PagingSource() { override suspend fun load(params: LoadParams): LoadResult { - val position = params.key ?: GITHUB_STARTING_PAGE_INDEX + val position = params.key?.let { + it * NETWORK_PAGE_SIZE / params.loadSize + } ?: GITHUB_STARTING_PAGE_INDEX val apiQuery = query + IN_QUALIFIER return try { val response = service.searchRepos(apiQuery, position, params.loadSize) val repos = response.items + val prevKey = if (position == GITHUB_STARTING_PAGE_INDEX) { + null + } else { + (position * params.loadSize / NETWORK_PAGE_SIZE) - 1 + } val nextKey = if (repos.isEmpty()) { null } else { @@ -47,7 +54,7 @@ class GithubPagingSource( } LoadResult.Page( data = repos, - prevKey = if (position == GITHUB_STARTING_PAGE_INDEX) null else position - 1, + prevKey = prevKey, nextKey = nextKey ) } catch (exception: IOException) {