From 6cc827769476bf0ddd3d51d9a1f4fba43d8a5254 Mon Sep 17 00:00:00 2001 From: Naveen Date: Sat, 19 Nov 2022 06:08:01 +0530 Subject: [PATCH] Enable stable ids again now we have stable ids, sorta --- .../smsmessenger/adapters/ThreadAdapter.kt | 8 ++++++++ .../smsmessenger/models/Message.kt | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 5273fdc4..12dd23d5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -67,6 +67,7 @@ class ThreadAdapter( init { setupDragListener(true) + setHasStableIds(true) } override fun getActionMenuId() = R.menu.cab_thread @@ -142,6 +143,13 @@ class ThreadAdapter( bindViewHolder(holder) } + override fun getItemId(position: Int): Long { + return when (val item = getItem(position)) { + is Message -> Message.getStableId(item) + else -> item.hashCode().toLong() + } + } + override fun getItemViewType(position: Int): Int { return when (val item = getItem(position)) { is ThreadLoading -> THREAD_LOADING diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt index 92320779..36123978 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt @@ -29,6 +29,20 @@ data class Message( fun millis() = date * 1000L companion object { + + fun getStableId(message: Message): Long { + var result = message.id.hashCode() + result = 31 * result + message.body.hashCode() + result = 32 * result + message.date.hashCode() + result = 31 * result + message.threadId.hashCode() + result = 31 * result + message.isMMS.hashCode() + result = 31 * result + (message.attachment?.hashCode() ?: 0) + result = 31 * result + message.senderName.hashCode() + result = 31 * result + message.senderPhotoUri.hashCode() + result = 31 * result + message.isScheduled.hashCode() + return result.toLong() + } + fun areItemsTheSame(old: Message, new: Message): Boolean { return old.id == new.id } @@ -36,6 +50,7 @@ data class Message( fun areContentsTheSame(old: Message, new: Message): Boolean { return old.body == new.body && old.threadId == new.threadId && + old.date == new.date && old.isMMS == new.isMMS && old.attachment == new.attachment && old.senderName == new.senderName &&