【问题标题】:Calling refresh method on paging data in jetpack compose not working correctly在jetpack compose中对分页数据调用刷新方法无法正常工作
【发布时间】:2022-01-02 08:09:52
【问题描述】:

我正在使用下面的分页源实现从网络获取数据并通过collectAsLazyPagingItems() 以可组合方式观察它。但是,在此LazyPagingItems 上调用refresh() 方法时,它不是从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)
        }
    }
}

【问题讨论】:

    标签: android kotlin android-jetpack-compose android-paging


    【解决方案1】:

    我通过在 getRefreshKey() 方法中返回 null 来解决此问题

    【讨论】:

    • 你能看看这个issue
    猜你喜欢
    • 2021-11-16
    • 2022-10-04
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多