diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt index 6196adb6..ce923bb6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -247,6 +247,7 @@ class MainActivity : SimpleActivity() { conversations_list.adapter = this } + conversations_list.scheduleLayoutAnimation() conversations_fastscroller.setViews(conversations_list) { val listItem = (conversations_list.adapter as? ConversationsAdapter)?.conversations?.getOrNull(it) conversations_fastscroller.updateBubbleText(listItem?.title ?: "") diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index 8560a881..26445408 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -138,24 +138,31 @@ class NewConversationActivity : SimpleActivity() { no_contacts_placeholder.text = getString(placeholderText) } - ContactsAdapter(this, contacts, contacts_list, null) { - hideKeyboard() - val contact = it as SimpleContact - val phoneNumbers = contact.phoneNumbers - if (phoneNumbers.size > 1) { - val items = ArrayList() - phoneNumbers.forEachIndexed { index, phoneNumber -> - items.add(RadioItem(index, phoneNumber, phoneNumber)) - } + val currAdapter = contacts_list.adapter + if (currAdapter == null) { + ContactsAdapter(this, contacts, contacts_list, null) { + hideKeyboard() + val contact = it as SimpleContact + val phoneNumbers = contact.phoneNumbers + if (phoneNumbers.size > 1) { + val items = ArrayList() + phoneNumbers.forEachIndexed { index, phoneNumber -> + items.add(RadioItem(index, phoneNumber, phoneNumber)) + } - RadioGroupDialog(this, items) { - launchThreadActivity(it as String, contact.name) + RadioGroupDialog(this, items) { + launchThreadActivity(it as String, contact.name) + } + } else { + launchThreadActivity(phoneNumbers.first(), contact.name) } - } else { - launchThreadActivity(phoneNumbers.first(), contact.name) + }.apply { + contacts_list.adapter = this } - }.apply { - contacts_list.adapter = this + + contacts_list.scheduleLayoutAnimation() + } else { + (currAdapter as ContactsAdapter).updateContacts(contacts) } setupLetterFastscroller(contacts) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt index b6d41b29..1f48eb53 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt @@ -17,8 +17,10 @@ import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.SimpleActivity import java.util.* -class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller?, - itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { +class ContactsAdapter( + activity: SimpleActivity, var contacts: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller?, + itemClick: (Any) -> Unit +) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { private var fontSize = activity.getTextSize() override fun getActionMenuId() = 0 @@ -51,10 +53,12 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList(R.id.item_contact_image)) + fun updateContacts(newContacts: ArrayList) { + val oldHashCode = contacts.hashCode() + val newHashCode = newContacts.hashCode() + if (newHashCode != oldHashCode) { + contacts = newContacts + notifyDataSetChanged() } } @@ -75,4 +79,11 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList(R.id.item_contact_image)) + } + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index aaa99efc..911f9b31 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -43,6 +43,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" + android:layoutAnimation="@anim/layout_animation" android:overScrollMode="ifContentScrolls" android:scrollbars="none" app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" /> diff --git a/app/src/main/res/layout/activity_new_conversation.xml b/app/src/main/res/layout/activity_new_conversation.xml index aaf95c05..7279f684 100644 --- a/app/src/main/res/layout/activity_new_conversation.xml +++ b/app/src/main/res/layout/activity_new_conversation.xml @@ -101,6 +101,7 @@ android:layout_height="match_parent" android:layout_below="@+id/suggestions_scrollview" android:clipToPadding="false" + android:layoutAnimation="@anim/layout_animation" android:overScrollMode="ifContentScrolls" android:scrollbars="none" app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />