DiffResults.dispatchUpdatesTo(это) не вызывает onBindViewHolder

#android #android-recyclerview #android-diffutils

Вопрос:

В моем фрагменте у меня есть наблюдаемые данные livedata, которые вызывают метод updatePlantsList() адаптера для отображения обновленного списка растений.

 viewModel.getAllPlants().observe(viewLifecycleOwner) { plantsList -gt;  adapter.updatePlantsList(plantsList as MutableListlt;Plantgt;)  }  

Метод updatePlantsList в адаптере

 fun updatePlantsList(plantsNewList: MutableListlt;Plantgt;){  val diffCallback = PlantOriginDiffCallback(this.plantsOriginList, plantsNewList)  val diffResults = DiffUtil.calculateDiff(diffCallback, true)  plantsOriginList.clear()  plantsOriginList.addAll(plantsNewList)  diffResults.dispatchUpdatesTo(this)  }  

И, наконец, класс diffutils

 class PlantOriginDiffCallback(  private val oldList: Listlt;Plantgt;,  private val newList: Listlt;Plantgt; ) : DiffUtil.Callback() {   override fun getOldListSize(): Int {  return oldList.size  }   override fun getNewListSize(): Int {  return newList.size  }   override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {  return oldList[oldItemPosition].plantID == newList[newItemPosition].plantID  }   override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {  return oldList[oldItemPosition] == newList[newItemPosition]  }  }   

Теперь вопрос в том, : У меня есть список растений отображается, перейдите на AddPlantFragment где я добавить новое предприятие, и когда я вернуться обратно к PlantsFragment, поначалу наблюдатель называет updatePlantsList() метод с старый список (который, в свою очередь, вызывает diffResults.dispatchUpdatesTo(этот) и, в свою очередь, в onBindViewHolder вызывается) и когда он попадает в новый список, то же самое происходит —

livedata наблюдает за изменениями -gt; вызывает updatePlantsList() в адаптере -gt;gt; это вызывает DiffResults.dispatchUpdatesTo(это), но тогда это все; gt;gt;onBindViewHolder больше не вызывается, поэтому я не вижу обновленный список.

Я в замешательстве. Почему onBindViewHolder не вызывается во второй раз, даже когда вызывается DiffResults.dispatchUpdatesTo(это)? Пожалуйста, помогите! Спасибо