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