From 3f2b88785a40b5c350b952cbf3ef54d5c13fdb0a Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 6 Apr 2020 20:46:26 +0200 Subject: [PATCH] add filtering by search string at the New Message activity --- .../activities/NewMessageActivity.kt | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt index a170d9f2..7222dd6b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewMessageActivity.kt @@ -25,7 +25,7 @@ import kotlinx.android.synthetic.main.activity_new_message.* import kotlinx.android.synthetic.main.item_selected_contact.view.* class NewMessageActivity : SimpleActivity() { - private var contacts = ArrayList() + private var allContacts = ArrayList() private var selectedContacts = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { @@ -45,8 +45,8 @@ class NewMessageActivity : SimpleActivity() { private fun initContacts() { val names = getNames() - contacts = getPhoneNumbers() - contacts.forEach { + allContacts = getPhoneNumbers() + allContacts.forEach { val contactId = it.id val contact = names.firstOrNull { it.id == contactId } val name = contact?.name @@ -62,13 +62,28 @@ class NewMessageActivity : SimpleActivity() { it.isOrganization = contact?.isOrganization ?: false } - contacts = contacts.filter { it.name.isNotEmpty() }.distinctBy { + allContacts = allContacts.filter { it.name.isNotEmpty() }.distinctBy { val startIndex = Math.max(0, it.phoneNumber.length - 9) it.phoneNumber.substring(startIndex) }.toMutableList() as ArrayList - contacts.sortBy { it.name.normalizeString().toLowerCase() } + allContacts.sortBy { it.name.normalizeString().toLowerCase() } + setupAdapter(allContacts) + new_message_to.onTextChangeListener { + val searchString = it + val filteredContacts = ArrayList() + allContacts.forEach { + if (it.phoneNumber.contains(searchString, true) || it.name.contains(searchString, true)) { + filteredContacts.add(it) + } + } + + setupAdapter(filteredContacts) + } + } + + private fun setupAdapter(contacts: ArrayList) { ContactsAdapter(this, contacts, suggestions_list, null) { hideKeyboard() Intent(this, ThreadActivity::class.java).apply {