diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 088dd913d..10c6b61b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -153,6 +153,7 @@ public class ConversationFragment extends LoggingFragment { private Locale locale; private RecyclerView list; private RecyclerView.ItemDecoration lastSeenDecoration; + private RecyclerView.ItemDecoration stickyHeaderDecoration; private ViewSwitcher topLoadMoreView; private ViewSwitcher bottomLoadMoreView; private ConversationTypingView typingView; @@ -435,7 +436,7 @@ public class ConversationFragment extends LoggingFragment { Log.d(TAG, "Initializing adapter for " + recipient.getId()); ConversationAdapter adapter = new ConversationAdapter(GlideApp.with(this), locale, selectionClickListener, this.recipient.get()); list.setAdapter(adapter); - list.addItemDecoration(new StickyHeaderDecoration(adapter, false, false)); + setStickyHeaderDecoration(adapter); ConversationAdapter.initializePool(list.getRecycledViewPool()); adapter.registerAdapterDataObserver(snapToTopDataObserver); @@ -573,6 +574,15 @@ public class ConversationFragment extends LoggingFragment { } } + public void setStickyHeaderDecoration(@NonNull ConversationAdapter adapter) { + if (stickyHeaderDecoration != null) { + list.removeItemDecoration(stickyHeaderDecoration); + } + + stickyHeaderDecoration = new StickyHeaderDecoration(adapter, false, false); + list.addItemDecoration(stickyHeaderDecoration); + } + public void setLastSeen(long lastSeen) { if (lastSeenDecoration != null) { list.removeItemDecoration(lastSeenDecoration);