我有一个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)
}