Android 分页库 |暂时停止加载更多数据

问题描述 投票:0回答:2

我正在使用带有 Retrofit 和 Realm 的 Android 分页库。我想在特定条件下禁用加载更多数据。然后在正常情况下加载更多数据。

android android-architecture-components android-paging-library
2个回答
0
投票

您预计多久翻转一次加载能力?

您是否试图阻止从网络加载到 Realm 或阻止从 Realm 中的缓存数据加载?

目前还没有办法阻止项目访问触发加载,但如果您想阻止网络加载,可以在

MediatorResult.Success(endOfPaginationReached = true)
中返回
RemoteMediator
。如果您试图阻止从 Realm 加载,您可以使用
null
prevKey for 
PREPEND
or
null
 
nextKey
for
APPEND
. When you're ready to start loading again, all you need to do is call 
PagingSource.invalidate()
(for db)
或 PagingDataAdapter 返回一个空页面.refresh()`(用于远程)丢弃现有的快照状态。这是一种方法,但如果您希望非常频繁地翻转加载状态,则不实用。

如果您确实走这条路线,您还需要实现

PagingSource.getRefreshKey(state: PagingState)
以允许
PagingSource
从用户正确查看列表中的位置重新加载项目。

对于位置键控的 PagingSource(从 Realm 等数据库进行分页时很常见),

getRefreshKey
的简单实现可能如下所示:

PagingSource.getRefreshKey(state: PagingState) = state.anchorPosition

我有兴趣了解有关您的用例的更多信息,如果更有效的方法是允许直接从项目访问禁用加载,请随时在此处提交功能请求,详细说明您的用例:https ://issuetracker.google.com/issues/new?component=413106&template=1096385


0
投票

您需要设置自己的loadmore适配器,然后更改loadState,如果endOfPaginationReachedtrue分页将隐藏loadmore ui并停止loadmore功能,反之亦然

loadmoreAdapter.loadState = LoadState.NotLoading(endOfPaginationReached = true)
© www.soinside.com 2019 - 2024. All rights reserved.