#android #android-recyclerview #android-diffutils
Вопрос:
У меня есть список сообщений, содержащий сообщения. И я использовал обычное RecyclerView.Adapter
вместо ListAdapter
.
Фрагмент чата
chatViewModel.msgListDisplayLiveData.observe(viewLifecycleOwner, {
chatAdapter.setChat(it)
})
Вот функция для обновления messageList
в адаптере.
Адаптация чата
fun setChat(newMessages: List<Message>) {
val diffUtil = ChatDiffUtil(messageList, newMessages)
val diffResults = DiffUtil.calculateDiff(diffUtil)
messageList = newMessages
diffResults.dispatchUpdatesTo(this)
--> Method of using notifyDataSetChanged()
// messageList = newMessages
// notifyDataSetChanged()
}
Ранее я использовал notifyDataSetChanged()
, и элемент списка может быть обновлен мгновенно, но без какой-либо анимации.
Таким образом, я решил использовать DiffUtils()
и получил приятную анимацию, когда элемент моего списка был добавлен/удален.
Однако, когда я хочу обновить один из элементов, DiffUtils
кажется, что это не имеет никакого видимого эффекта.
С помощью функции notifyDataSetChanged() — можно мгновенно обновить строку.
Using DiffUtils() — cannot update instantly.
What had I done wrongly? Please advise me.