diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt index 7b90e213..3688e622 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt @@ -29,7 +29,6 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener { group = intent.extras.getSerializable(GROUP) as Group supportActionBar?.title = group.title - refreshContacts() group_contacts_fab.setOnClickListener { SelectContactsDialog(this, allContacts, groupContacts) { addedContacts, removedContacts -> ContactsHelper(this).apply { @@ -41,6 +40,11 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener { } } + override fun onResume() { + super.onResume() + refreshContacts() + } + private fun refreshContacts() { ContactsHelper(this).getContacts { allContacts = it @@ -54,29 +58,34 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener { } private fun updateContacts(contacts: ArrayList) { - ContactsAdapter(this, contacts, null, LOCATION_GROUP_CONTACTS, this, group_contacts_list, group_contacts_fastscroller) { - when (config.onContactClick) { - ON_CLICK_CALL_CONTACT -> { - val contact = it as Contact - if (contact.phoneNumbers.isNotEmpty()) { - tryStartCall(it) - } else { - toast(R.string.no_phone_number_found) + val currAdapter = group_contacts_list.adapter + if (currAdapter == null) { + ContactsAdapter(this, contacts, null, LOCATION_GROUP_CONTACTS, this, group_contacts_list, group_contacts_fastscroller) { + when (config.onContactClick) { + ON_CLICK_CALL_CONTACT -> { + val contact = it as Contact + if (contact.phoneNumbers.isNotEmpty()) { + tryStartCall(it) + } else { + toast(R.string.no_phone_number_found) + } } + ON_CLICK_VIEW_CONTACT -> viewContact(it as Contact) + ON_CLICK_EDIT_CONTACT -> editContact(it as Contact) } - ON_CLICK_VIEW_CONTACT -> viewContact(it as Contact) - ON_CLICK_EDIT_CONTACT -> editContact(it as Contact) + }.apply { + setupDragListener(true) + addVerticalDividers(true) + group_contacts_list.adapter = this } - }.apply { - setupDragListener(true) - addVerticalDividers(true) - group_contacts_list.adapter = this - } - group_contacts_fastscroller.setScrollTo(0) - group_contacts_fastscroller.setViews(group_contacts_list) { - val item = (group_contacts_list.adapter as ContactsAdapter).contactItems.getOrNull(it) - group_contacts_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") + group_contacts_fastscroller.setScrollTo(0) + group_contacts_fastscroller.setViews(group_contacts_list) { + val item = (group_contacts_list.adapter as ContactsAdapter).contactItems.getOrNull(it) + group_contacts_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") + } + } else { + (currAdapter as ContactsAdapter).updateItems(contacts) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index 23a5e7cf..d7e26b9b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -110,9 +110,11 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList) { - contactItems = newItems - notifyDataSetChanged() - finishActMode() + if (newItems.hashCode() != contactItems.hashCode()) { + contactItems = newItems + notifyDataSetChanged() + finishActMode() + } } private fun editContact() {