Android 来自分页库3的分页源,结果为回调

Android 来自分页库3的分页源,结果为回调,android,pagination,aws-amplify,android-paging,android-paging-library,Android,Pagination,Aws Amplify,Android Paging,Android Paging Library,目前,我正在尝试迁移到新的Android paging 3库,但如果我看对了,我无法:( 我正在使用AWS Amplify作为后端数据源,并希望在分页库中PaginSource类的新加载函数中包含一个查询 override suspend fun load(params: LoadParams<String>): LoadResult<String, Car> { val query = ListCarsQuery.builder().limit(pa

目前,我正在尝试迁移到新的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 = ""
            )
覆盖挂起乐趣加载(参数:LoadParams):LoadResult{
val query=listcarsqery.builder().limit(params.loadSize.build())
appSyncClient.query(查询)
.responseFetcher(AppSyncResponseFetchers.CACHE\u和\u网络)
.排队(
对象:GraphQLCall.Callback(){
覆盖响应(响应:响应){
val结果=变压器.模型(响应)
//这是我的实际成绩表
}
覆盖失效(e:异常){
TODO(“尚未实施”)
}
}
)
//如何在此处添加结果列表?
返回LoadResult.Page(
data=listOf(),
prevKey=null,
nextKey=“”
)
由于enqueues方法返回了一个void,我不知道如何等待它或触发类似分页库2中的回调。在分页2中,我可以选择调用enqueue().onResponse函数中的callback.onResult(result.data,result.nextLink)方法,而不必返回任何内容


有没有办法实现它,或者我应该坚持使用第2页?

第3页还没有提供回调API,所以您需要将它包装成一个RxJava单页、一个番石榴列表未来,或者是一个挂起的Kotlin协程

PagingSource的Rx版本在
paging-rxjava2/3
工件中提供,而番石榴则在
paging Guava
中提供


就实际转换而言,列出所有的可能性可能会有很多,但例如,Kotlin Coroutine构建器允许您在挂起上下文中包装并等待xallbacks。例如,您基本上得到了一个
Continuation
对象,您可以调用
resume(result)
继续。

坚持使用第2页。我不幸决定使用第3页,现在我正在与之斗争很多,只是为了在第2页中做一些简单的事情。不仅如此,由于某些原因,文档在很大程度上依赖于改型的用法,而没有关于如何在不改型的情况下做同样的事情的示例。这对妈妈来说真的很糟糕在真正采用之前,需要做更多的工作。