На рисунке желтый блок - это основное представление переработчика, а зеленый блок - это видоискатель, содержащий вид переработчика, в котором размещены синие видоискатели блока. Мой вопрос заключается в том, хотел ли я изменить только один из синих блоков, используя DiffUtils, из действия root, в котором размещается основное представление переработчика.
Структура данных для макета выглядит следующим образом
data class MainObject(
val list : List<GreenObjects>
){
data class GreenObjects(
val list : List<BlueObjects>
)
}
И это мой текущий класс DiffUtils
class CustomDiffUtils<T>(private val newList : List<T>? , private var oldList : List<T>?
) : DiffUtil.Callback() {
override fun areItemsTheSame(oldItemPosition : Int , newItemPosition : Int) : Boolean {
return (newList?.get(newItemPosition).hashCode() == oldList?.get(oldItemPosition).hashCode())
}
override fun getOldListSize() : Int {
return oldList?.size ?: 0
}
override fun getNewListSize() : Int {
return newList?.size ?: 0
}
override fun areContentsTheSame(oldItemPosition : Int , newItemPosition : Int) : Boolean {
return (newList?.get(newItemPosition).hashCode() == oldList?.get(oldItemPosition).hashCode())
}
}
Я пробовал использовать способ по умолчанию для Diffutils, но дело в том, что я хотел обновить только один из BlueObjects, и если я обновлю один из них и обновите root recyclerview, синие блоки не обновляются, поскольку GreenOjects не обновляются. Как мне этого добиться?