我正在使用带有 Retrofit 和 Realm 的 Android 分页库。我想在特定条件下禁用加载更多数据。然后在正常情况下加载更多数据。
您预计多久翻转一次加载能力?
您是否试图阻止从网络加载到 Realm 或阻止从 Realm 中的缓存数据加载?
目前还没有办法阻止项目访问触发加载,但如果您想阻止网络加载,可以在
MediatorResult.Success(endOfPaginationReached = true)
中返回 RemoteMediator
。如果您试图阻止从 Realm 加载,您可以使用 null
prevKey for
PREPENDor
null
nextKeyfor
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
您需要设置自己的loadmore适配器,然后更改loadState,如果endOfPaginationReached为true分页将隐藏loadmore ui并停止loadmore功能,反之亦然
loadmoreAdapter.loadState = LoadState.NotLoading(endOfPaginationReached = true)