【发布时间】:2020-07-15 04:40:49
【问题描述】:
我有一个RecyclerView,它使用一个PagedListAdapter,它从ROOM 和网络API 中获取数据。它使用BoundaryCallback 向API 发出请求,返回的数据被插入到数据库(ROOM)中
当前列表是可过滤的,例如我可以按多个类别过滤产品列表
问题
如果我使用增量按钮将产品项目 quantity 增加到例如 12,然后我尝试通过添加更多类别来过滤列表,则当前列表不会刷新,这很好,因为 DiffUtil.ItemCallback 确认项目是相同的,但是一旦我尝试在按更多类别过滤后增加相同产品的数量,它又从零开始......
注意数量不是房间中的一列,它是一个被忽略的变量。
所以我不太确定问题到底出在哪里:下面是执行递增和递减的代码。
override fun onIncrementQuantity(position: Int, item: ProductEntity) {
item.quantity = item.quantity + 1
selectedProducts[item.item.id!!] = item
productAdapter?.notifyItemChanged(position, item)
}
override fun onDecrementQuantity(position: Int, item: ProductEntity) {
item.quantity = if (item.quantity == 0) 0 else item.quantity - 1
if (item.quantity == 0) {
selectedProducts.remove(item.item.id)
} else {
selectedProducts[item.item.id!!] = item
}
productAdapter?.notifyItemChanged(position, item)
}
【问题讨论】:
标签: android android-room android-livedata page-library