如何解决来自分页库3的PagingSource,结果为回调
当前,我正在尝试迁移到新的Android页面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 = ""
)
因为该方法排队使我感到虚无,所以我不知道如何等待它或像分页库2中那样触发回调。在分页2中,我可以选择调用callback.onResult(result.data ,enqueue()。onResponse函数中的result.nextLink)方法,而无需退还任何东西。
有没有办法做到这一点,还是我应该坚持使用分页2?
解决方法
Paging3还没有提供回调API,因此您需要将其包装到RxJava Single,Guava ListenableFuture或悬浮的Kotlin协程中。
PagingSource的Rx版本在paging-rxjava2/3
工件中可用,而番石榴在paging-guava
中。
就实际转换而言,列出所有可能性将很多,但是例如,有一些Kotlin Coroutine构建器允许您在挂起的上下文中包装和等待xallbacks。以suspendCancellableCoroutine为例,基本上可以得到一个Continuation
对象,可以调用resume(result)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。