From 45e3d0b8652ea06ba9801b5e7fac9a14c284f4e1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 3 Apr 2020 12:20:39 +0200 Subject: [PATCH] adding an initial implementation of the messages adapter --- .../smsmessenger/activities/MainActivity.kt | 9 ++- .../smsmessenger/adapters/SMSsAdapter.kt | 62 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 22 +++++++ app/src/main/res/layout/item_sms.xml | 39 ++++++++++++ app/src/main/res/menu/cab_smss.xml | 14 +++++ 5 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/SMSsAdapter.kt create mode 100644 app/src/main/res/layout/item_sms.xml create mode 100644 app/src/main/res/menu/cab_smss.xml 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 5e0d0ab2..abae7eb3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -11,7 +11,9 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_SMS import com.simplemobiletools.commons.models.FAQItem import com.simplemobiletools.smsmessenger.BuildConfig import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.adapters.SMSsAdapter import com.simplemobiletools.smsmessenger.models.SMS +import kotlinx.android.synthetic.main.activity_main.* class MainActivity : SimpleActivity() { @@ -48,7 +50,12 @@ class MainActivity : SimpleActivity() { } private fun initMessenger() { - val sms = getSMSs() + val smss = getSMSs() + SMSsAdapter(this, smss, smss_list, smsss_fastscroller) { + + }.apply { + smss_list.adapter = this + } } private fun getSMSs(): ArrayList { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/SMSsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/SMSsAdapter.kt new file mode 100644 index 00000000..5e5e65be --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/SMSsAdapter.kt @@ -0,0 +1,62 @@ +package com.simplemobiletools.smsmessenger.adapters + +import android.view.Menu +import android.view.View +import android.view.ViewGroup +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.views.FastScroller +import com.simplemobiletools.commons.views.MyRecyclerView +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.activities.SimpleActivity +import com.simplemobiletools.smsmessenger.models.SMS +import kotlinx.android.synthetic.main.item_sms.view.* + +class SMSsAdapter( + activity: SimpleActivity, var SMSs: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller, itemClick: (Any) -> Unit +) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { + + init { + setupDragListener(true) + } + + override fun getActionMenuId() = R.menu.cab_smss + + override fun prepareActionMode(menu: Menu) {} + + override fun actionItemPressed(id: Int) {} + + override fun getSelectableItemCount() = SMSs.size + + override fun getIsItemSelectable(position: Int) = true + + override fun getItemSelectionKey(position: Int) = SMSs.getOrNull(position)?.id + + override fun getItemKeyPosition(key: Int) = SMSs.indexOfFirst { it.id == key } + + override fun onActionModeCreated() {} + + override fun onActionModeDestroyed() {} + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_sms, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val sms = SMSs[position] + holder.bindView(sms, true, true) { itemView, layoutPosition -> + setupView(itemView, sms) + } + bindViewHolder(holder) + } + + override fun getItemCount() = SMSs.size + + private fun getItemWithKey(key: Int): SMS? = SMSs.firstOrNull { it.id == key } + + private fun getSelectedItems() = SMSs.filter { selectedKeys.contains(it.id) } as ArrayList + + private fun setupView(view: View, sms: SMS) { + view.apply { + view.sms_address.text = sms.address + view.sms_message_short.text = sms.body + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e119ba87..f2533b81 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,6 +1,28 @@ + + + + + + + diff --git a/app/src/main/res/layout/item_sms.xml b/app/src/main/res/layout/item_sms.xml new file mode 100644 index 00000000..7b928c72 --- /dev/null +++ b/app/src/main/res/layout/item_sms.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/app/src/main/res/menu/cab_smss.xml b/app/src/main/res/menu/cab_smss.xml new file mode 100644 index 00000000..2a2792e0 --- /dev/null +++ b/app/src/main/res/menu/cab_smss.xml @@ -0,0 +1,14 @@ + + + + +