I have implemented a view with a parent RecyclerView and a nested one. The nested RecyclerView contains Cards with items of a shopping card, that need to be updated when the user clicks on them (by showing a badge with the purchased quantity).
Both recyclers work with their ListAdapter with the DiffUtil.ItemCallback.
The point is the implementation of the outer ListAdapter areContentsTheSame of the DiffUtil.ItemCallback object: if it return false when the quantity changes, the quantity badge of the inner recycler is never updated. If it returns true, the entire inner RecyclerView is redrawn.
object ListDiffCallback : DiffUtil.ItemCallback<CategoryWithItems>() {
override fun areContentsTheSame(oldItem: CategoryWithItems, newItem: CategoryWithItems): Boolean {
var result oldItem.category.name == newItem.category.name
oldItem.itemQuantityList?.forEachIndexed { index, value ->
result = result && value.item.quantity == newItem.itemQuantityList?.get(index)?.item?.quantity
}
return result
}
}
So my question is: how can I redraw only the clicked card of the inner RecyclerView?