|
|
@@ -33,11 +33,23 @@ class ConversationListAdapter(listener: IViewProviderListener<BaseUiConversation
|
|
|
override fun getNewListSize(): Int = newList.size
|
|
|
|
|
|
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
|
|
- return oldList[oldItemPosition].conversationKey == newList[newItemPosition].conversationKey
|
|
|
+ val oldItem = oldList.getOrNull(oldItemPosition)
|
|
|
+ val newItem = newList.getOrNull(newItemPosition)
|
|
|
+ return when {
|
|
|
+ oldItem != null && newItem != null -> oldItem.conversationKey == newItem.conversationKey
|
|
|
+ oldItem == null && newItem == null -> true
|
|
|
+ else -> false
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
|
|
- return !newList[newItemPosition].isChange
|
|
|
+ val oldItem = oldList.getOrNull(oldItemPosition)
|
|
|
+ val newItem = newList.getOrNull(newItemPosition)
|
|
|
+ return when {
|
|
|
+ oldItem != null && newItem != null -> oldItem == newItem || !newItem.isChange
|
|
|
+ oldItem == null && newItem == null -> true
|
|
|
+ else -> false
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|