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 dfc044ee..8bfd93bc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -36,6 +36,8 @@ import androidx.annotation.StringRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.res.ResourcesCompat import androidx.core.view.* +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.dialogs.ConfirmationDialog @@ -394,8 +396,10 @@ class ThreadActivity : SimpleActivity() { runOnUiThread { refreshMenuItems() getOrCreateThreadAdapter().apply { - val scrollPosition = if (currentList.lastOrNull() != threadItems.lastOrNull()) { - threadItems.lastIndex + val lastPosition = itemCount - 1 + val lastVisiblePosition = (thread_messages_list.layoutManager as LinearLayoutManager).findLastVisibleItemPosition() + val scrollPosition = if (currentList.lastOrNull() != threadItems.lastOrNull() && lastPosition - lastVisiblePosition <= 2) { + lastPosition } else { -1 } @@ -1235,7 +1239,7 @@ class ThreadActivity : SimpleActivity() { val newItems = getThreadItems() runOnUiThread { - getOrCreateThreadAdapter().updateMessages(newItems) + getOrCreateThreadAdapter().updateMessages(newItems, newItems.lastIndex) if (!refreshedSinceSent) { refreshMessages() } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 4d2ccf76..8e942bfb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -227,7 +227,7 @@ class ThreadAdapter( private fun isThreadDateTime(position: Int) = currentList.getOrNull(position) is ThreadDateTime - fun updateMessages(newMessages: ArrayList, scrollPosition: Int = newMessages.lastIndex) { + fun updateMessages(newMessages: ArrayList, scrollPosition: Int = -1) { val latestMessages = newMessages.toMutableList() submitList(latestMessages) { if (scrollPosition != -1) { diff --git a/app/src/main/res/drawable/ic_arrow_down_vector.xml b/app/src/main/res/drawable/ic_arrow_down_vector.xml new file mode 100644 index 00000000..eefe3292 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_down_vector.xml @@ -0,0 +1,3 @@ + + +