使用 skip/take 的分页 3 库
Paging 3 library using skip/take
我正在考虑使用 paging 3 库来处理我的 android 应用程序的分页。一个小问题是,我发现的每个示例都假设我总是向 API 提供页码,当我的公司使用 skip/take 作为我们的 API 时,其他一些 APIs 我使用它不受我的控制。
我看到 paging 2 有一些东西,但它看起来已经贬值了,所以我很好奇他们对 paging 3 的解决方案是什么?
skip/take 是指您有一个 item-keyed 源,它需要加载多个项目并将偏移量作为输入?
在 Paging2 中,每种类型的键都有明确的 类,但在 Paging3 中,您可以控制如何直接解释键,因此您可以使用偏移量作为键来实现 PagingSource。
天真,只是为了展示nextKey
计算:
class MyPagingSource : PagingSource<Int, Item>() {
override suspend fun load(params: LoadParams) {
...
val data = api.load(offset = params.key, size = params.loadSize)
return LoadResult.Page(
...
prevKey = ...
nextKey = data.size() + params.key
)
}
...
}
注意:如果你想支持前置、错误处理和getRefreshKey
,你仍然需要实现前置
我正在考虑使用 paging 3 库来处理我的 android 应用程序的分页。一个小问题是,我发现的每个示例都假设我总是向 API 提供页码,当我的公司使用 skip/take 作为我们的 API 时,其他一些 APIs 我使用它不受我的控制。
我看到 paging 2 有一些东西,但它看起来已经贬值了,所以我很好奇他们对 paging 3 的解决方案是什么?
skip/take 是指您有一个 item-keyed 源,它需要加载多个项目并将偏移量作为输入?
在 Paging2 中,每种类型的键都有明确的 类,但在 Paging3 中,您可以控制如何直接解释键,因此您可以使用偏移量作为键来实现 PagingSource。
天真,只是为了展示nextKey
计算:
class MyPagingSource : PagingSource<Int, Item>() {
override suspend fun load(params: LoadParams) {
...
val data = api.load(offset = params.key, size = params.loadSize)
return LoadResult.Page(
...
prevKey = ...
nextKey = data.size() + params.key
)
}
...
}
注意:如果你想支持前置、错误处理和getRefreshKey