我正在尝试使用 Paging 3 库中的 PagingAdapter 找到一种方法来更新回收器视图中的单个项目。我发现只有一种使用 PagingAdapter.refresh() 方法的方法。但是这种方法强制从网络加载所有列表。有人知道如何在不从网络加载所有页面的情况下实现它吗?
问问题
3221 次
3 回答
12
目前,更新支持数据集的唯一方法是使列表无效并重新加载。对于使用缓存层(在 db 中,例如房间或内存中)的分层源来说,这通常是一个可以接受的廉价选择,尽管正在进行工作以支持更精细的更新(请参阅https://issuetracker.google.com/160232968)。
就目前的分层源而言,您需要将网络调用移动到RemoteMediator
您可以在Pager
的构造函数中注册的 a 中,并将您的网络获取缓存到像 Room 这样的数据库中(它可以PagingSource
为您生成一个实现),或者自己写一个内存。
于 2020-07-28T17:20:20.610 回答
1
例子 :
fun markItemAsRead(position: Int) {
snapshot()[position].read = true
notifyItemChanged(position)
}
于 2021-08-16T10:54:05.113 回答
0
(adapterComment.snapshot().items as MutableList<Model>)[position].likeStatus = 0
adapterComment.notifyItemChanged(position)
于 2022-01-19T19:34:14.910 回答