From 55f72997ac33ffc89be3498727da009da0de9183 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Sat, 5 May 2018 20:30:43 +0200 Subject: [PATCH] Fix mentions Signed-off-by: Mario Danic --- .../MentionAutocompletePresenter.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java index c8b694402..aaade89a7 100644 --- a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java +++ b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java @@ -23,6 +23,7 @@ package com.nextcloud.talk.presenters; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; import android.view.View; import com.nextcloud.talk.adapters.items.MentionAutocompleteItem; @@ -61,6 +62,8 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter private String roomToken; + private List abstractFlexibleItemList = new ArrayList<>(); + public MentionAutocompletePresenter(Context context) { super(context); this.context = context; @@ -76,14 +79,14 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter @Override protected RecyclerView.Adapter instantiateAdapter() { - adapter = new FlexibleAdapter<>(new ArrayList(), context, true); + adapter = new FlexibleAdapter<>(abstractFlexibleItemList, context, true); adapter.addListener(this); return adapter; } @Override protected void onQuery(@Nullable CharSequence query) { - if (query != null && query.length() > 0) { + if (!TextUtils.isEmpty(query)) { UserEntity currentUser = userUtils.getCurrentUser(); adapter.setFilter(query.toString()); @@ -101,22 +104,24 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter @Override public void onNext(MentionOverall mentionOverall) { List mentionsList = mentionOverall.getOcs().getData(); - List internalUserItemList = new ArrayList<>(); - if (mentionsList.size() == 0 || - (mentionsList.size() == 1 && mentionsList.get(0).getId().equals(query.toString()))) { - adapter.notifyDataSetChanged(); + + if (mentionsList.size() == 0) { + adapter.clear(); } else { + List internalAbstractFlexibleItemList = new ArrayList<>(); for (Mention mention : mentionsList) { - internalUserItemList.add(new MentionAutocompleteItem(mention.getId(), mention - .getLabel(), currentUser)); + internalAbstractFlexibleItemList.add( + new MentionAutocompleteItem(mention.getId(), mention.getLabel(), + currentUser)); } - adapter.updateDataSet(internalUserItemList, true); + + adapter.updateDataSet(internalAbstractFlexibleItemList); } } @Override public void onError(Throwable e) { - adapter.updateDataSet(new ArrayList<>(), false); + adapter.clear(); } @Override @@ -125,7 +130,7 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter } }); } else { - adapter.updateDataSet(new ArrayList<>(), false); + adapter.clear(); } }