From e96a02ab357d3f98262901b56c89e2c18c4f27e3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 25 Jul 2018 00:24:49 -0400 Subject: [PATCH] Fix next/prev message detection with fastRecords. The previous way we were getting the next/previous record didn't take into consideration that some records aren't in the cursor -- some are in the fastRecords map. We now use the proper position to get the next/previous message. --- src/org/thoughtcrime/securesms/ConversationAdapter.java | 9 ++++----- .../securesms/database/CursorRecyclerViewAdapter.java | 7 ------- .../database/FastCursorRecyclerViewAdapter.java | 6 +++--- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/org/thoughtcrime/securesms/ConversationAdapter.java index fe8faa761f..7d7d2049c1 100644 --- a/src/org/thoughtcrime/securesms/ConversationAdapter.java +++ b/src/org/thoughtcrime/securesms/ConversationAdapter.java @@ -190,12 +190,11 @@ public class ConversationAdapter } @Override - protected void onBindItemViewHolder(ViewHolder viewHolder, @NonNull MessageRecord messageRecord, int adjustedPosition) { - + protected void onBindItemViewHolder(ViewHolder viewHolder, @NonNull MessageRecord messageRecord) { long start = System.currentTimeMillis(); - int rawPosition = getRawCursorPosition(adjustedPosition); - MessageRecord previousRecord = rawPosition < getItemCount() - 1 && !isFooterPosition(rawPosition + 1) ? getRecordForPositionOrThrow(rawPosition + 1) : null; - MessageRecord nextRecord = rawPosition > 0 && !isHeaderPosition(rawPosition - 1) ? getRecordForPositionOrThrow(rawPosition - 1) : null; + int adapterPosition = viewHolder.getAdapterPosition(); + MessageRecord previousRecord = adapterPosition < getItemCount() - 1 && !isFooterPosition(adapterPosition + 1) ? getRecordForPositionOrThrow(adapterPosition + 1) : null; + MessageRecord nextRecord = adapterPosition > 0 && !isHeaderPosition(adapterPosition - 1) ? getRecordForPositionOrThrow(adapterPosition - 1) : null; viewHolder.getView().bind(messageRecord, Optional.fromNullable(previousRecord), diff --git a/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java b/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java index 9d12340ef3..31b9cc42ac 100644 --- a/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java +++ b/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java @@ -211,13 +211,6 @@ public abstract class CursorRecyclerViewAdapter