From 29670d63fff25b1af40fb1e083d2b29a6e95646c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 14 Feb 2019 17:14:22 +0100 Subject: [PATCH] Switched to multi listener --- .../linphone/chat/ChatMessagesAdapter.java | 42 ++++++++++--------- .../linphone/chat/ChatMessagesOldAdapter.java | 7 +--- .../java/org/linphone/chat/ImdnFragment.java | 13 ++---- .../org/linphone/chat/ImdnOldFragment.java | 13 +++++- .../NotificationBroadcastReceiver.java | 2 +- 5 files changed, 41 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java index 2e87fb613..fe00e10a3 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java @@ -52,6 +52,7 @@ public class ChatMessagesAdapter extends SelectableAdapter mTransientMessages; private final ChatMessageViewHolderClickListener mClickListener; + private final ChatMessageListenerStub mListener; public ChatMessagesAdapter( ChatMessagesFragment fragment, @@ -69,6 +70,25 @@ public class ChatMessagesAdapter extends SelectableAdapter(); + + mListener = + new ChatMessageListenerStub() { + @Override + public void onMsgStateChanged(ChatMessage message, ChatMessage.State state) { + ChatMessageViewHolder holder = + (ChatMessageViewHolder) message.getUserData(); + if (holder != null) { + notifyItemChanged(holder.getAdapterPosition()); + } else { + // Just in case, better to refresh the whole view than to miss + // an update + notifyDataSetChanged(); + } + if (state == ChatMessage.State.Displayed) { + mTransientMessages.remove(message); + } + } + }; } @Override @@ -110,25 +130,7 @@ public class ChatMessagesAdapter extends SelectableAdapter