Привет, ребята, я реализовал свой собственный ArrayAdapter, потому что у меня есть два текстовых представления в одном элементе ListView. Хотя фильтрация работает нормально (она показывает правильные элементы), когда я удаляю текст, который я набрал для фильтрации элементов, ListView не переходит в исходное состояние (он не отображает все элементы), а просто оставляет отфильтрованный список без изменений. Вот моя реализация фильтра:
private class NightFilter extends Filter {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
items = (ArrayList<NightOut>) results.values;
clear();
int count = items.size();
for (int i = 0; i < count; i++) {
NightOut pkmn = (NightOut) items.get(i);
add(pkmn);
}
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults result = new FilterResults();
if (constraint == null || constraint.length() == 0) {
ArrayList<NightOut> list = new ArrayList<NightOut>(nightsOut);
result.values = list;
result.count = list.size();
} else {
final ArrayList<NightOut> list = new ArrayList<NightOut>(nightsOut);
final ArrayList<NightOut> nlist = new ArrayList<NightOut>();
int count = list.size();
for (int i = 0; i < count; i++) {
final NightOut nightOut = list.get(i);
final String value = nightOut.getAddress().toLowerCase();
if (value.contains(constraint.toString().toLowerCase())) {
nlist.add(nightOut);
}
}
result.values = nlist;
result.count = nlist.size();
}
return result;
}
}
И nightOut, и items содержат объекты, которые я хочу фильтровать (я назначаю их в конструкторе). Мой собственный класс адаптера расширяет ArrayAdapter, если это может помочь.
Редактировать:
Добавлен код для конструктора и фильтрации текста
public CustomArrayAdapter(Activity context, ArrayList<NightOut> nightsOut) {
super(context, R.layout.list_item, nightsOut);
this.context = context;
this.nightsOut = nightsOut;
this.items = nightsOut;
}
Метод поиска
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
ViewPlacesActivity.this.adapter.getFilter().filter(cs);
}
Есть идеи, что мне не хватает?
Ура Кайл
ArrayAdapter
, в котором вы назначаетеitems
,nightsOut
и вызываете суперконструктор? - person George Mulligan   schedule 30.03.2016