From 2156236abe7d2e39116e8c2eec96e92cd003409a Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Fri, 21 Sep 2018 21:03:14 +0200 Subject: [PATCH] make the ConversationList IDs stable again, fixes #41 --- .../thoughtcrime/securesms/ConversationAdapter.java | 12 ++++++++++-- src/org/thoughtcrime/securesms/ConversationItem.java | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/org/thoughtcrime/securesms/ConversationAdapter.java index 11ad6bc09..762a4c323 100644 --- a/src/org/thoughtcrime/securesms/ConversationAdapter.java +++ b/src/org/thoughtcrime/securesms/ConversationAdapter.java @@ -118,6 +118,14 @@ public class ConversationAdapter return dcMsgList.length; } + @Override + public long getItemId(int position) { + if (position<0 || position>=dcMsgList.length) { + return 0; + } + return dcMsgList[dcMsgList.length-1-position]; + } + private @NonNull DcMsg getMsg(int position) { if(position<0 || position>=dcMsgList.length) { return new DcMsg(0); @@ -131,7 +139,7 @@ public class ConversationAdapter } } - final DcMsg fromDb = dcContext.getMsg(dcMsgList[dcMsgList.length-1-position]); + final DcMsg fromDb = dcContext.getMsg((int)getItemId(position)); recordCache.put(position, new SoftReference<>(fromDb)); return fromDb; } @@ -183,7 +191,7 @@ public class ConversationAdapter ConversationAdapter.ViewHolder holder = (ConversationAdapter.ViewHolder)viewHolder; Optional previous = position >= dcMsgList.length-1? Optional.absent() : Optional.of(getMsg(position+1)); Optional next = position <= 0? Optional.absent() : Optional.of(getMsg(position-1)); - boolean pulseHighlight = dcMsgList[position] == recordToPulseHighlight; + boolean pulseHighlight = position == recordToPulseHighlight; holder.getItem().bind(getMsg(position), previous, next, glideRequests, locale, batchSelected, recipient, pulseHighlight); } diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java index 0e1110dde..3dcee3c8d 100644 --- a/src/org/thoughtcrime/securesms/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/ConversationItem.java @@ -184,7 +184,7 @@ public class ConversationItem extends LinearLayout @NonNull Locale locale, @NonNull Set batchSelected, @NonNull Recipient recipients, - boolean pulseHighlight) + boolean pulseHighlight) { this.messageRecord = messageRecord; this.locale = locale;