【发布时间】:2020-12-02 12:25:35
【问题描述】:
目前,我正在尝试迁移到 Android 的新 paging 3 库,但如果我没看错的话,我不能:(
我使用 AWS Amplify 作为我的后端数据源,并希望在分页库的 PaginSource 类的新加载函数中包含一个查询。
override suspend fun load(params: LoadParams<String>): LoadResult<String, Car> {
val query = ListCarsQuery.builder().limit(params.loadSize).build()
appSyncClient.query(query)
.responseFetcher(AppSyncResponseFetchers.CACHE_AND_NETWORK)
.enqueue(
object : GraphQLCall.Callback<ListCarsQuery.Data>() {
override fun onResponse(response: Response<ListCarsQuery.Data>) {
val result = CarTransformer.toModels(response)
// Here is my actual result list
}
override fun onFailure(e: ApolloException) {
TODO("Not yet implemented")
}
}
)
//How can I add my result list here ?
return LoadResult.Page(
data = listOf(),
prevKey = null,
nextKey = ""
)
由于方法 enqueues 给了我一个 void 返回,我不知道如何等待它或触发像分页库 2 中那样的回调。在分页 2 中,我可以选择调用 callback.onResult(result.data , result.nextLink) 方法中的 enqueue().onResponse 函数,而无需返回任何东西。
有没有办法实现它,还是我应该坚持使用第 2 页?
【问题讨论】:
-
坚持使用 Paging 2。不幸的是,我决定选择 3,而我现在正在努力争取做一些在 2 中很容易做到的简单事情。不仅如此,但是由于某种原因,文档严重依赖于 Retrofit 的使用,没有示例说明如何在没有 Retrofit 的情况下执行相同的操作。目前真的很糟糕,需要做更多的工作才能真正采用。
标签: android pagination aws-amplify android-paging android-paging-library