From 3cc08abcce206e07ea219c5528a388242601a972 Mon Sep 17 00:00:00 2001 From: Yuri Albuquerque Date: Tue, 23 Jun 2020 14:40:32 -0300 Subject: [PATCH] [NY-10774][NY-10775] Fix multithread access to mChatAdapter.getItems --- .../decorators/UnreadDividerDecoration.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java index 3dfd2a809e..8f68770a28 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java @@ -78,15 +78,18 @@ public class UnreadDividerDecoration extends RecyclerView.ItemDecoration { int viewType = mChatAdapter.getItemViewType(position); if (viewType == ChatAdapter.Dummy) return; int height = 0; - final List items = mChatAdapter.getItems(); - if (!items.get(position).isLoadingMessage() && (position == 0 || (position + 1 <= mChatAdapter.getItemCount() - && items.get(position - 1).created != null && items.get(position).created != null - && !DateUtils.areSameDates(items.get(position - 1).created, items.get(position).created)))) { - final Long created = items.get(position).created; - if (created != null) { - String date = DateUtils.getChatTime(created, mContext); - mPaint.getTextBounds(date, 0, date.length(), mDateBbounds); - height = mDateBbounds.height() + mSpaceTop; + final List items = Collections.synchronizedList(mChatAdapter.getItems()); + synchronized (items) { + if (!items.get(position).isLoadingMessage() && (position == 0 + || (position + 1 <= mChatAdapter.getItemCount() && items.get(position - 1).created != null + && items.get(position).created != null && !DateUtils + .areSameDates(items.get(position - 1).created, items.get(position).created)))) { + final Long created = items.get(position).created; + if (created != null) { + String date = DateUtils.getChatTime(created, mContext); + mPaint.getTextBounds(date, 0, date.length(), mDateBbounds); + height = mDateBbounds.height() + mSpaceTop; + } } } if (mChatAdapter.mMyReadMessage >= 0 && mChatAdapter.mUnreadMessages > 0) { -- GitLab