Android 如何使PagedList或DataSource中的数据子集无效?
在Android中,如何使页面列表或数据源中的数据集子集无效?我写PagedList或DataSource是因为我不知道应该调用哪一个 例如,我正在制作一个名为BufferOverflow的QA应用程序 我有一个通过网络加载数据的Android 如何使PagedList或DataSource中的数据子集无效?,android,android-jetpack,android-paging,android-paging-library,Android,Android Jetpack,Android Paging,Android Paging Library,在Android中,如何使页面列表或数据源中的数据集子集无效?我写PagedList或DataSource是因为我不知道应该调用哪一个 例如,我正在制作一个名为BufferOverflow的QA应用程序 我有一个通过网络加载数据的PageKeyedDataSource。它支持API上的索引分页。在那个应用程序中,我有一个顶部问题屏幕,上面有“无限”的顶部问题列表。当然,首要问题会定期更新 如何: 是否在第1页更新数据集 是否在第10页更新数据集 我知道使用PagedList的好处是它将使用Dif
PageKeyedDataSource
。它支持API上的索引分页。在那个应用程序中,我有一个顶部问题屏幕,上面有“无限”的顶部问题列表。当然,首要问题会定期更新
如何:
DiffUtil
计算新/旧项目。但是,我如何告诉它某些键
或位置
上的数据集已更改
我的要求不可能吗?我应该自己实现自定义分页行为吗
注意:
但当然,更新数据集不是适配器的责任。它位于
页面列表
,数据源
,或Dao类上。解决此问题的唯一方法是引入一个具有空间的持久层。
根据此处的文件:
如果您有更细粒度的更新信号,例如网络API
发出更新列表中单个项目的信号,建议
将数据从网络加载到内存中。然后将该数据提交给
通过数据源包装内存中快照的页面列表。每次
内存中的副本会发生更改,使以前的数据源无效,并且
可以创建包含快照新状态的新快照
当你构造可观察的页面列表对象时,考虑内容如何 更新工作。如果您直接从房间数据库加载数据 更新会自动推送到应用程序的UI
解决这个问题的唯一方法是引入一个具有空间的持久层。 根据此处的文件: 如果您有更细粒度的更新信号,例如网络API 发出更新列表中单个项目的信号,建议 将数据从网络加载到内存中。然后将该数据提交给 通过数据源包装内存中快照的页面列表。每次 内存中的副本会发生更改,使以前的数据源无效,并且 可以创建包含快照新状态的新快照
当你构造可观察的页面列表对象时,考虑内容如何 更新工作。如果您直接从房间数据库加载数据 更新会自动推送到应用程序的UI
“我不想使所有数据无效。”
-你必须,没有其他方法-有关更多信息,请参阅和查找更新页面数据
部分为什么不使数据无效并正确执行加载之前
/加载之后
?@EpicPandaForce您能解释一下正确执行加载之前
/加载之后
是什么意思吗?那么您为什么不想使所有数据无效数据?@pskink,因为那样做效率会很低。我使用分页的原因是因为我认为我们只需要使一小部分数据无效就可以重新加载列表(diff将由DiffUtil计算)。例如,在Twitter应用程序中,我们不必重新加载所有推文,只需使推文的第一个索引(新推文)无效。“我不想使所有数据无效。”
-您必须,没有其他方法-有关更多信息,请参阅和查找更新页面数据
部分为什么不使数据无效并正确执行加载之前
/加载之后
?@EpicPandaForce您能解释一下正确执行加载之前
/加载之后
是什么意思吗?那么您为什么不想使所有数据无效数据?@pskink,因为那样做效率会很低。我使用分页的原因是因为我认为我们只需要使一小部分数据无效就可以重新加载列表(diff将由DiffUtil计算)。例如,在Twitter应用程序中,我们不必重新加载所有推文,只需使推文的第一个索引(新推文)无效。