Доброго
вот код, разбираюсь со своим адаптером, наткнулся на непонятный момент
private ArrayList<String> allMyForArrayAdapter = new ArrayList<>(); //он не пустой, там 26 значений
@Override
public Filter getFilter() {
Log.i("Test", "getFilter");
Log.i("Test", "aaaaaaaa" + allMyForArrayAdapter.size()); //тут нормально
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
// Log.i("Test", "performFiltering " + charSequence);
charSequence = charSequence.toString().toLowerCase();
FilterResults filterResults = new FilterResults();
if (charSequence.toString().length() > 0) {
Log.i("Test", charSequence.toString().length() + "");
Log.i("Test", "а это не работает" + allMyForArrayAdapter.size());//а это не работает
ArrayList<String> strings = new ArrayList<>();
for (int i = 0; allMyForArrayAdapter.size() > i; ++i) {
String m = allMyForArrayAdapter.get(i).toLowerCase();
Log.i("Test", allMyForArrayAdapter.get(i).toLowerCase());
if (m.contains(charSequence)) {
strings.add(m);
}
}
filterResults.values = strings;
filterResults.count = strings.size();
} else {
synchronized (this) {
filterResults.values = list;
filterResults.count = list.size();
}
}
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
// Log.i("Test", "publishResults " + charSequence);
allMyForArrayAdapter = (ArrayList<String>) filterResults.values;
notifyDataSetChanged();
clear();
for (int i = 0; list.size() > i; ++i)
add(list.get(i));
notifyDataSetInvalidated();
}
};
return filter;
}