如何更新PagedListAdapter中的单个项目

时间:2018-12-29 19:21:31

标签: android android-recyclerview android-jetpack android-pagedlistview

我已经用ItemKeyedDataSource实现了新的PagedListAdapter。我的列表包含带有“喜欢”按钮的供稿项目。单击“赞”按钮应刷新该项目。

要通过单击类似按钮刷新我的列表项,我更新了Firestore后端的状态,并在ItemKeyedDataSource上调用了invalidate。但这将刷新我的整个列表,同时又跳回到列表的顶部。

我不确定这是否是正常行为,所以我进行调试并检查maiby我的DiffUtil.ItemCallback是问题所在。但是,永远不会调用这两个方法(areItemsTheSame和areContentsTheSame)。

那么在DataSource上调用invalidate是触发单个项目更新的方法吗? DiffUtil是否可以帮助我在更新后跟踪列表中的位置,还是我看错了方向?

2 个答案:

答案 0 :(得分:3)

您可以像普通适配器一样进行修改,唯一的区别是您将使用SwiftUI

getItem(position)

答案 1 :(得分:0)

经过一番挖掘,我找到了以下解决方案:

要更新单个项目

您可以在适配器上调用notifyItemChanged。这将从数据源获取更新并更新列表项。

feedDataSourceFactory.feedLiveData.value!!.invalidate()

刷新所有数据

您可以在数据源上调用无效

inv