adding some contact displaying related things

This commit is contained in:
tibbi 2020-05-07 16:21:56 +02:00
parent f7bf4743a7
commit e04702590b
4 changed files with 82 additions and 2 deletions

View File

@ -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'
}

View File

@ -143,7 +143,9 @@ class MainActivity : SimpleActivity() {
}
ContactsHelper(this).getAvailableContacts { contacts ->
runOnUiThread {
contacts_fragment.refreshContacts(contacts)
}
}
}

View File

@ -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<SimpleContact>, 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<ImageView>(R.id.item_contact_tmb))
}
}
private fun setupView(view: View, contact: SimpleContact) {
view.apply {
findViewById<TextView>(R.id.item_contact_name).text = contact.name
findViewById<TextView>(R.id.item_contact_name).setTextColor(textColor)
findViewById<TextView>(R.id.item_contact_number).text = contact.phoneNumber
findViewById<TextView>(R.id.item_contact_number).setTextColor(textColor)
ContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_tmb), contact.name)
}
}
}

View File

@ -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<SimpleContact>) {
ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, null) {
}.apply {
fragment_list.adapter = this
}
}
}