diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java index 104523f8a..fcb706309 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java @@ -67,6 +67,8 @@ import eu.davidea.viewholders.FlexibleViewHolder; public class ConversationItem extends AbstractFlexibleItem implements ISectionable, IFilterable { + public static final int VIEW_TYPE = R.layout.rv_item_conversation_with_last_message; + private static final float STATUS_SIZE_IN_DP = 9f; private final Conversation conversation; @@ -75,6 +77,7 @@ public class ConversationItem extends AbstractFlexibleItem adapter) { return new ConversationItemViewHolder(view, adapter); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java index a6065a54e..de5e006ce 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -956,31 +956,30 @@ public class ConversationsListController extends BaseController implements Flexi @Override public boolean onItemClick(View view, int position) { final AbstractFlexibleItem item = adapter.getItem(position); - if (item instanceof ConversationItem) { - showConversation(((ConversationItem) Objects.requireNonNull(item)).getModel()); - } else if (item instanceof MessageResultItem) { - MessageResultItem messageItem = (MessageResultItem) item; - String conversationToken = messageItem.getMessageEntry().getConversationToken(); - selectedMessageId = messageItem.getMessageEntry().getMessageId(); - showConversationByToken(conversationToken); - } else if (item instanceof LoadMoreResultsItem) { - loadMoreMessages(); + if (item != null) { + final int viewType = item.getItemViewType(); + if (viewType == MessageResultItem.VIEW_TYPE) { + MessageResultItem messageItem = (MessageResultItem) item; + String conversationToken = messageItem.getMessageEntry().getConversationToken(); + selectedMessageId = messageItem.getMessageEntry().getMessageId(); + showConversationByToken(conversationToken); + } else if (viewType == LoadMoreResultsItem.VIEW_TYPE) { + loadMoreMessages(); + } else if (viewType == ConversationItem.VIEW_TYPE) { + showConversation(((ConversationItem) Objects.requireNonNull(item)).getModel()); + } } - return true; } private void showConversationByToken(String conversationToken) { - Conversation conversation = null; for (AbstractFlexibleItem absItem : conversationItems) { ConversationItem conversationItem = ((ConversationItem) absItem); if (conversationItem.getModel().getToken().equals(conversationToken)) { - conversation = conversationItem.getModel(); + final Conversation conversation = conversationItem.getModel(); + showConversation(conversation); } } - if (conversation != null) { - showConversation(conversation); - } } private void showConversation(@Nullable final Conversation conversation) { @@ -1390,7 +1389,7 @@ public class ConversationsListController extends BaseController implements Flexi clearMessageSearchResults(); final List entries = results.getMessages(); if (entries.size() > 0) { - List adapterItems = new ArrayList<>(); + List adapterItems = new ArrayList<>(entries.size() + 1); for (int i = 0; i < entries.size(); i++) { final boolean showHeader = i == 0; adapterItems.add(new MessageResultItem(context, currentUser, entries.get(i), showHeader));