From e04702590bc21e74f6357f13f796c5535a6edec9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 7 May 2020 16:21:56 +0200 Subject: [PATCH] adding some contact displaying related things --- app/build.gradle | 2 +- .../dialer/activities/MainActivity.kt | 4 +- .../dialer/adapters/ContactsAdapter.kt | 69 +++++++++++++++++++ .../dialer/fragments/MyViewPagerFragment.kt | 9 +++ 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt diff --git a/app/build.gradle b/app/build.gradle index ac75d07c..23a43eb4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,6 +36,6 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.27.10' + implementation 'com.simplemobiletools:commons:5.27.12' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index b7ce53be..6ff47fbb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -143,7 +143,9 @@ class MainActivity : SimpleActivity() { } ContactsHelper(this).getAvailableContacts { contacts -> - + runOnUiThread { + contacts_fragment.refreshContacts(contacts) + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt new file mode 100644 index 00000000..bcaf9931 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -0,0 +1,69 @@ +package com.simplemobiletools.dialer.adapters + +import android.view.Menu +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import com.bumptech.glide.Glide +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.helpers.ContactsHelper +import com.simplemobiletools.commons.models.SimpleContact +import com.simplemobiletools.commons.views.FastScroller +import com.simplemobiletools.commons.views.MyRecyclerView +import com.simplemobiletools.dialer.R +import com.simplemobiletools.dialer.activities.SimpleActivity +import java.util.* + +class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller?, + itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { + + override fun getActionMenuId() = 0 + + override fun prepareActionMode(menu: Menu) {} + + override fun actionItemPressed(id: Int) {} + + override fun getSelectableItemCount() = contacts.size + + override fun getIsItemSelectable(position: Int) = true + + override fun getItemSelectionKey(position: Int) = contacts.getOrNull(position)?.id + + override fun getItemKeyPosition(key: Int) = contacts.indexOfFirst { it.id == key } + + override fun onActionModeCreated() {} + + override fun onActionModeDestroyed() {} + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_contact_with_number, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val contact = contacts[position] + holder.bindView(contact, true, false) { itemView, layoutPosition -> + setupView(itemView, contact) + } + bindViewHolder(holder) + } + + override fun getItemCount() = contacts.size + + override fun onViewRecycled(holder: ViewHolder) { + super.onViewRecycled(holder) + if (!activity.isDestroyed && !activity.isFinishing) { + Glide.with(activity).clear(holder.itemView.findViewById(R.id.item_contact_tmb)) + } + } + + private fun setupView(view: View, contact: SimpleContact) { + view.apply { + findViewById(R.id.item_contact_name).text = contact.name + findViewById(R.id.item_contact_name).setTextColor(textColor) + + findViewById(R.id.item_contact_number).text = contact.phoneNumber + findViewById(R.id.item_contact_number).setTextColor(textColor) + + ContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_tmb), contact.name) + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt index d47cf5c6..1d54e29e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt @@ -7,6 +7,7 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.extensions.underlineText import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.activities.SimpleActivity +import com.simplemobiletools.dialer.adapters.ContactsAdapter import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.helpers.Config import kotlinx.android.synthetic.main.fragment_letters_layout.view.* @@ -30,4 +31,12 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fun finishActMode() { (fragment_list.adapter as? MyRecyclerViewAdapter)?.finishActMode() } + + fun refreshContacts(contacts: ArrayList) { + ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, null) { + + }.apply { + fragment_list.adapter = this + } + } }