【问题标题】:Paging library - Can't stop loading items分页库 - 无法停止加载项目
【发布时间】:2018-07-21 20:53:15
【问题描述】:

我正在使用分页库直接从网络加载日期。我是否必须实现逻辑来停止获取数据?就我而言,这可能是收到的项目数低于页面大小。目前,当我到达列表末尾时,lib 会不断加载新页面。

【问题讨论】:

  • 你是在使用 Room + DataSource.Factory 和 BoundaryCallback,还是项目键控数据源?
  • @EpicPandaForce 我正在使用 PageKeyedDataSource。数据直接从网络获取,不存储在本地。

标签: android pagination android-architecture-components android-paging


【解决方案1】:

理论上,PageKeyedDataSource 有结果回调,

PageKeyedDataSource.LoadCallback

这有一个 onResult 方法,文档说

如果没有更多数据要加载,则传递一个空列表。

将要加载的后续页面的密钥传递给相邻页面密钥。例如,如果您在 loadBefore(LoadParams, LoadCallback) 中加载了一个页面,则传递上一页的键,如果加载的页面是第一个,则传递 null。如果在 loadAfter(LoadParams, LoadCallback) 中,则传递下一页的键,如果加载的页面是最后一页,则为 null。

所以它说你应该传递一个空列表,null 用于相邻的页面键,它应该可以工作。

【讨论】:

  • 我已经尝试过使用空列表并且它正在工作,但最后一个数据块没有显示在列表中。让我尝试使用 null 作为相邻页面键。
  • 是的,就是这样。谢谢。
  • 如果 url 没有任何页码要传递怎么办?@EpicPandaForce@Rade
  • 好吧,如果 api 分页,那么问题是您可以发送什么参数来执行此操作。如果你不能,那么可能没有分页。如果你得到完整的数据集,那么你可以保存到磁盘然后使用位置数据源(房间可以生成它)
  • 即使列表为空或小于 requestLoadSize,是否有任何方法可以继续加载?我的页面大小是 10,如果我调用的端点少于 10 个项目,它会加载、停止并且不调用下一个端点。即使我收到的列表小于 10,我也想继续调用端点。有什么提示吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-09
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 2016-05-13
相关资源
最近更新 更多