如何为基于光标的分页实现PagingSource.getRefreshKey-Android Jetpack Paging 3
我正在尝试使用实现基于光标的分页(基于),但我不知道如何实现 这就是我尝试过的:如何为基于光标的分页实现PagingSource.getRefreshKey-Android Jetpack Paging 3,android,kotlin,android-jetpack,android-paging,android-paging-3,Android,Kotlin,Android Jetpack,Android Paging,Android Paging 3,我正在尝试使用实现基于光标的分页(基于),但我不知道如何实现 这就是我尝试过的: data class PagingKey( val before: String? = null, val after: String? = null, ) class MoviePagingSource() : PagingSource<PagingKey, Movie>() { override suspend fun load(params: LoadParams<
data class PagingKey(
val before: String? = null,
val after: String? = null,
)
class MoviePagingSource() : PagingSource<PagingKey, Movie>() {
override suspend fun load(params: LoadParams<PagingKey>): LoadResult<PagingKey, Movie> {
return try {
val response = fetchMovies(
before = params.key?.before,
after = params.key?.after,
pageSize = params.loadSize,
)
LoadResult.Page(
data = response.edges.map { mapEdgeToMovie(it) },
prevKey = if (response.pageInfo.hasPreviousPage) PagingKey(
before = response.pageInfo.startCursor
) else null,
nextKey = if (response.pageInfo.hasNextPage) PagingKey(
after = response.pageInfo.endCursor
) else null,
)
} catch (exception: Exception) {
LoadResult.Error(exception)
}
}
override fun getRefreshKey(state: PagingState<PagingKey, Movie>): PagingKey? {
// TODO: What to return here?
}
}
数据类分页键(
val之前:字符串?=null,
字符串之后的val?=null,
)
类MoviePagingSource():PagingSource(){
覆盖挂起乐趣加载(参数:LoadParams):LoadResult{
回击{
val response=fetch(
before=参数键?before,
after=参数键?。after,
pageSize=params.loadSize,
)
LoadResult.Page(
data=response.edges.map{mapEdgeToMovie(it)},
prevKey=if(response.pageInfo.hasPreviousPage)PagingKey(
before=response.pageInfo.startCursor
)否则无效,
nextKey=if(response.pageInfo.hasNextPage)PagingKey(
after=response.pageInfo.endCursor
)否则无效,
)
}捕获(异常:异常){
LoadResult.Error(异常)
}
}
覆盖getRefreshKey(状态:PagingState):PagingKey{
//TODO:在这里返回什么?
}
}
在所有的例子中,我都能发现页码只是简单地递增/递减,但这对游标不起作用
实施这一点的正确方式是什么
在这被错误地标记为重复之前,我已经看到了。这并不能回答我的问题,因为它们的API被称为
service.getOrders(query,params.key?:“”,10)
,而不是前面单独的
/后面的参数,如上面的fetchMovies