gpt4 book ai didi

android - 如何使 PagedList 或 DataSource 中的数据子集无效?

转载 作者:行者123 更新时间:2023-11-30 05:05:56 25 4
gpt4 key购买 nike

在安卓中paging library ,如何使 PagedList 或 DataSource 中的数据集子集无效?我写 PagedList 或 DataSource 是因为我不知道应该调用哪个。

例如,我正在制作一个名为 BufferOverflow 的 QA 应用程序。

我有一个通过网络加载数据的 PageKeyedDataSource。它支持通过 API 上的索引进行分页。在该应用程序中,我有一个热门问题屏幕,其中包含“无限”的热门问题列表。当然,置顶问题会定期更新。

如何:

  1. 更新第 1 页的数据集?
  2. 更新第 10 页的数据集?

我知道使用 PagedList 的好处是它会使用 DiffUtil 计算哪个项目是新的/旧的。但是,如何告诉它某些 keyposition 上的数据集已更改?

我问的是不可能的吗?我应该自己实现自定义分页行为吗?


注意:

  1. 我不想让所有数据都失效。

adapter.getCurrentList().getDataSource().invalidate();

这将使数据源上的全部数据无效。虽然我只想使某些部分数据无效。

  1. 我认为我正在寻找的 API 类似于 RecyclerView.Adapter 的 API

list.adapter.notifyItemChanged(0);

当然,更新数据集不是 Adapter 的责任。它在 PagedListDataSource 或 Dao 类中..

最佳答案

解决这个问题的唯一方法是在 Room 中引入一个持久层。 https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample#paging-with-database-and-network

根据此处的文档:https://developer.android.com/reference/androidx/paging/DataSource#updating-paged-data

If you have more granular update signals, such as a network API signaling an update to a single item in the list, it's recommended to load data from the network into memory. Then present that data to the PagedList via a DataSource that wraps an in-memory snapshot. Each time the in-memory copy changes, invalidate the previous DataSource, and a new one wrapping the new state of the snapshot can be created.

https://developer.android.com/topic/libraries/architecture/paging/data#consider-content-updates

As you construct observable PagedList objects, consider how content updates work. If you're loading data directly from a Room database updates get pushed to your app's UI automatically.

关于android - 如何使 PagedList 或 DataSource 中的数据子集无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54603154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com