Ограничение на performFiltering возвращает NULL на первый символ
Я написал пользовательский фильтр для AutoCompleteTextView. Работает отлично, но есть одна мелочь. Ограничение на performFiltering равно null для первого символа. Смысл процесс фильтрации начинается только тогда, когда второй символ помещается в AutoCompleteTextView.
Это код фильтра:
private Filter nameFilter = new Filter() {
public String convertResultToString(Object resultValue) {
String fullName = ((User)(resultValue)).facebookName;
return fullName;
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
if(constraint != null) {
suggestions.clear();
for (User friend : allFriends) {
if(friend.facebookName.toLowerCase().contains(constraint.toString().toLowerCase())){
suggestions.add(friend);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
}
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
ArrayList<User> filteredList = (ArrayList<User>) results.values;
if(results != null && results.count > 0) {
clear();
for (User friend : filteredList) {
add(friend);
}
notifyDataSetChanged();
}
}
};
может ли кто-нибудь помочь мне, как это исправить, чтобы фильтр начал фильтрацию на первом символе?
1 ответов
установить threshold
до 1:
autoCompleteTextView.setThreshold(1)
задает минимальное количество символов, которое пользователь должен ввести в поле редактирования перед отображением выпадающего списка. Если порог меньше или равен 0, применяется порог 1.