From 6d8c45b5b7179a8c9593022f5623b8d06dcc8192 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 11 Dec 2018 13:39:43 +0100 Subject: [PATCH] Fixes #100 --- .../quasseldroid/ui/chat/input/ChatlineFragment.kt | 3 +++ .../ui/chat/input/MessageHistoryAdapter.kt | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt index 53d840014..af1d91712 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt @@ -163,6 +163,9 @@ class ChatlineFragment : ServiceBoundFragment() { messageHistory.adapter = messageHistoryAdapter viewModel.recentlySentMessages.toLiveData() .observe(this, Observer(messageHistoryAdapter::submitList)) + messageHistoryAdapter.setOnUpdateFinishedListener { + messageHistory.scrollToPosition(0) + } fun send() { if (chatline.safeText.isNotBlank()) { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt index 0f3527018..df87a54f0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt @@ -24,11 +24,11 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import butterknife.BindView import butterknife.ButterKnife import de.kuschku.quasseldroid.R +import de.kuschku.quasseldroid.util.lists.ListAdapter class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.MessageViewHolder>( object : DiffUtil.ItemCallback<CharSequence>() { @@ -39,17 +39,26 @@ class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.Me oldItem == newItem }) { private var clickListener: ((CharSequence) -> Unit)? = null + private var updateFinishedListener: (() -> Unit)? = null - fun setOnItemClickListener(listener: (CharSequence) -> Unit) { + fun setOnItemClickListener(listener: ((CharSequence) -> Unit)?) { this.clickListener = listener } + fun setOnUpdateFinishedListener(listener: (() -> Unit)?) { + this.updateFinishedListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MessageViewHolder( LayoutInflater.from(parent.context).inflate(R.layout.widget_history_message, parent, false), clickListener = clickListener ) + override fun onUpdateFinished(list: List<CharSequence>) { + updateFinishedListener?.invoke() + } + override fun onBindViewHolder(holder: MessageViewHolder, position: Int) = holder.bind(getItem(position)) -- GitLab