Ann*_*non 3 android kotlin android-paging android-jetpack-compose
我使用下面的分页源实现从网络获取数据并通过可组合方式观察它collectAsLazyPagingItems()。但是,当调用refresh()this 方法时LazyPagingItems,它不会从中获取数据page 0,而是从上次获取的页码中获取数据,这导致没有数据可显示。这是怎么回事?难道是因为val page = params.key ?: 0?
class CommentDataSource(
private val postId: Long,
private val commentApi: CommentApi
) : PagingSource<Int, Comment>() {
override fun getRefreshKey(state: PagingState<Int, Comment>): Int? {
return state.anchorPosition
}
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Comment> {
return try {
val page = params.key ?: 0
val responseData = commentApi.getPostComments(
postId = postId,
page = page
).data
LoadResult.Page(
data = responseData.comments,
prevKey = if (page == 0) null else page - 1,
nextKey = if (!responseData.hasNextPage) null else responseData.currentPage + 1
)
} catch (e: IOException) {
LoadResult.Error(e)
} catch (e: HttpException) {
LoadResult.Error(e)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |