#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