Я внедряю фильтр в свой пользовательский адаптер, но получаю CME, когда нажимаю значок поиска на панели действий. Я провожу некоторые исследования и редактирую свой код, но безрезультатно.
Мой код:
private class TaskFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
constraint = constraint.toString().toLowerCase();
FilterResults result = new FilterResults();
if (constraint != null && constraint.toString().length() > 0) {
ArrayList<TaskModel> filteredItems = new ArrayList<TaskModel>();
for (int i = 0, l = originalList.size(); i < l; i++) {
TaskModel country = originalList.get(i);
if (country.getName().toString().toLowerCase().contains(constraint))
filteredItems.add(country);
}
result.count = filteredItems.size();
result.values = filteredItems;
} else {
synchronized (this) {
result.values = originalList;
result.count = originalList.size();
}
}
return result;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
clear();
List<TaskModel> listcopy = (List<TaskModel>) results.values;
synchronized (listcopy) {
for (Iterator<TaskModel> it = listcopy.iterator(); it.hasNext(); ) {
TaskModel f = (TaskModel) it.next(); //this one cause the CME
add(f);
}
}
notifyDataSetChanged();
}
}
Что я могу сделать?
CME
? Вы где-то используетеThread
s? - person nKn   schedule 24.04.2014List
несколькими экземплярами класса и сделал циклfor
, как у вас, и не выдаетCME
. Это действительно не должно, поскольку вы ничего не изменяете. Не могли бы вы опубликовать полную трассировку стека и перепроверить, действительно ли указанная вами строка выдаетCME
? - person nKn   schedule 25.04.2014