diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 4740641e..38370d1d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -2,8 +2,10 @@ package com.simplemobiletools.smsmessenger.activities import android.os.Bundle import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.adapters.ThreadAdapter import com.simplemobiletools.smsmessenger.extensions.getMessages import com.simplemobiletools.smsmessenger.helpers.THREAD_ID +import kotlinx.android.synthetic.main.activity_thread.* class ThreadActivity : SimpleActivity() { @@ -12,5 +14,12 @@ class ThreadActivity : SimpleActivity() { setContentView(R.layout.activity_thread) val threadID = intent.getIntExtra(THREAD_ID, 0) val messages = getMessages(threadID) + messages.sortBy { it.id } + + ThreadAdapter(this, messages, thread_messages_list, thread_messages_fastscroller) { + + }.apply { + thread_messages_list.adapter = this + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt new file mode 100644 index 00000000..eb8b0cf9 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -0,0 +1,73 @@ +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.Message +import kotlinx.android.synthetic.main.item_thread_message.view.* + +class ThreadAdapter( + activity: SimpleActivity, var messages: ArrayList, + recyclerView: MyRecyclerView, + fastScroller: FastScroller, + itemClick: (Any) -> Unit +) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { + + init { + setupDragListener(true) + } + + override fun getActionMenuId() = R.menu.cab_messages + + override fun prepareActionMode(menu: Menu) {} + + override fun actionItemPressed(id: Int) { + if (selectedKeys.isEmpty()) { + return + } + + when (id) { + R.id.cab_select_all -> selectAll() + } + } + + override fun getSelectableItemCount() = messages.size + + override fun getIsItemSelectable(position: Int) = true + + override fun getItemSelectionKey(position: Int) = messages.getOrNull(position)?.id + + override fun getItemKeyPosition(key: Int) = messages.indexOfFirst { it.id == key } + + override fun onActionModeCreated() {} + + override fun onActionModeDestroyed() {} + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_thread_message, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val message = messages[position] + holder.bindView(message, true, true) { itemView, layoutPosition -> + setupView(itemView, message) + } + bindViewHolder(holder) + } + + override fun getItemCount() = messages.size + + private fun getItemWithKey(key: Int): Message? = messages.firstOrNull { it.id == key } + + private fun getSelectedItems() = messages.filter { selectedKeys.contains(it.id) } as ArrayList + + private fun setupView(view: View, message: Message) { + view.apply { + thread_message_body.text = message.body + thread_message_body.setTextColor(textColor) + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 47aeafec..5148f166 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,6 +10,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" + android:overScrollMode="ifContentScrolls" android:scrollbars="none" app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" /> diff --git a/app/src/main/res/layout/activity_thread.xml b/app/src/main/res/layout/activity_thread.xml index ea57cf81..b9e71d26 100644 --- a/app/src/main/res/layout/activity_thread.xml +++ b/app/src/main/res/layout/activity_thread.xml @@ -1,7 +1,30 @@ + + + + + + + diff --git a/app/src/main/res/layout/item_thread_message.xml b/app/src/main/res/layout/item_thread_message.xml new file mode 100644 index 00000000..73906622 --- /dev/null +++ b/app/src/main/res/layout/item_thread_message.xml @@ -0,0 +1,16 @@ + + + + + +