Просмотр списка фильтров при редактировании текста

#android #listview #filter #android-edittext

#Android #просмотр списка #Фильтр #android-edittext

Вопрос:

У меня есть edit text в виде строки поиска и list view, который фильтрует текст, который я ввел, но, к сожалению, он не фильтрует list view. Я использовал адаптер настраиваемого массива с object Friend. У объекта Friend есть имя, адрес и номер телефона, но я хочу отфильтровать только его имя. В моей деятельности…

 searchBarTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    friendListAdapter.getFilter().filter(s);
}}
  

Находясь в адаптере…

 @Переопределить общедоступный фильтр getFilter() { Log.d(ТЕГ, "начать getFilter"); if(newFilter == null) { newFilter = new Filter() { @Переопределить защищенные недействительные результаты публикации (ограничение последовательности символов, результаты FilterResults) { // Автоматически сгенерированная заглушка метода TODO Log.d(ТЕГ, "publishResults"); notifyDataSetChanged(); }

@Override protected FilterResults performFiltering(CharSequence constraint) { Log.d(TAG, "performFiltering"); constraint = constraint.toString().toLowerCase(); Log.d(TAG, "constraint : " constraint); List<ChatObject> filteredFriendList = new LinkedList<ChatObject>(); for(int i=0; i<friendList.size(); i ) { Friend newFriend = friendList.get(i); Log.d(TAG, "displayName : " newFriend.getDisplayName().toLowerCase()); if(newFriend.getDisplayName().toLowerCase().contains(constraint)) { Log.d(TAG, "equals : " newFriend.getDisplayName()); filteredFriendList.add(newFriend); } } FilterResults newFilterResults = new FilterResults(); newFilterResults.count = filteredFriendList.size(); newFilterResults.values = filteredFriendList; return newFilterResults; } }; } Log.d(TAG, "end getFilter"); return newFilter; }

Не мог бы кто-нибудь, пожалуйста, помочь мне, как правильно отобразить адаптер фильтруемого массива? Я думаю, что notifyDataSetChanged не вызывается. Спасибо.

Ответ №1:

Моя проблема решена, выяснилось, что мне нужно переопределить getCount () и GetItem().

Комментарии:

1. Большое вам спасибо. Я подозревал, что это был виновник, и это устранило мою проблему.

2. не могли бы вы объяснить, как вы переопределяете getCount()? у объекта Filter нет значения count, но у объекта FilterResults оно есть.

3. Можете ли вы прислать мне ссылку или любую ссылку для фильтра listview в Android