From d1fcfa4aa625914f1f87914789e2c28684c06925 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 3 Oct 2018 16:52:32 +0200 Subject: [PATCH] Do not refresh all chat bubbles when only one or a few has been updated (doesn't always reload pictures anymore) --- .../org/linphone/chat/ChatEventsAdapter.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/android/org/linphone/chat/ChatEventsAdapter.java b/src/android/org/linphone/chat/ChatEventsAdapter.java index d7d7b4568..9fc1fad1a 100644 --- a/src/android/org/linphone/chat/ChatEventsAdapter.java +++ b/src/android/org/linphone/chat/ChatEventsAdapter.java @@ -123,7 +123,14 @@ public class ChatEventsAdapter extends SelectableAdapter { } message.setFileTransferFilepath(null); // Not needed anymore, will help differenciate between InProgress states for file transfer / message sending } - notifyDataSetChanged(); + for (int i = 0; i < mHistory.size(); i++) { + EventLog log = mHistory.get(i); + if (log.getType() == EventLog.Type.ConferenceChatMessage && log.getChatMessage() == message) { + notifyItemChanged(i); + break; + } + } + } }; } @@ -141,7 +148,7 @@ public class ChatEventsAdapter extends SelectableAdapter { } @Override - public void onBindViewHolder(@NonNull ChatBubbleViewHolder holder, int position) { + public void onBindViewHolder(@NonNull ChatBubbleViewHolder holder, final int position) { final EventLog event = mHistory.get(position); holder.eventLayout.setVisibility(View.GONE); holder.bubbleLayout.setVisibility(View.GONE); @@ -354,7 +361,7 @@ public class ChatEventsAdapter extends SelectableAdapter { @Override public void onClick(View v) { message.cancelFileTransfer(); - notifyDataSetChanged(); + notifyItemChanged(position); } }); } @@ -416,7 +423,6 @@ public class ChatEventsAdapter extends SelectableAdapter { } public void addToHistory(EventLog log) { - notifyItemChanged(0); mHistory.add(0, log); notifyItemInserted(0); } @@ -458,7 +464,7 @@ public class ChatEventsAdapter extends SelectableAdapter { public void removeItem(int i) { mHistory.remove(i); - notifyDataSetChanged(); + notifyItemRemoved(i); } private void loadBitmap(String path, ImageView imageView) {