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 53d8400146786c4c20b97da26153ecca9350f0cb..af1d9171270cd95d80336611447bed4a52ddd9eb 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 0f3527018729e5be866bd3342357981dcfdd2e22..df87a54f0b1e7b4422e54e1df5877a36d74105a7 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))