1

I have a message list that contains messages. And I used a regular RecyclerView.Adapter instead of ListAdapter.

ChatFragment

chatViewModel.msgListDisplayLiveData.observe(viewLifecycleOwner, {
    chatAdapter.setChat(it)
})

Here is the function to update messageList in adapter.

ChatAdapter

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()
}

Previously I am using notifyDataSetChanged() and the list item can be updated instantly, but without any animation. Thus, I decided to use DiffUtils() and I got the nice animation when my list's item got append/remove.

However, when I want to update one of the item, DiffUtils seems do not have any visible effect.

Using notifyDataSetChanged() - can instantly update the row. enter image description here

Using DiffUtils() - cannot update instantly. enter image description here

What had I done wrongly? Please advise me.

Teo
  • 876
  • 9
  • 22

0 Answers0