Ich schrieb einen benutzerdefinierten Filter für eine AutoCompleteTextView. Es funktioniert gut, aber eine kleine Sache. Die Einschränkung für performFiltering ist beim ersten Zeichen null. Das bedeutet, dass der Filtervorgang erst startet, wenn das zweite Zeichen in die AutoCompleteTextView eingefügt wird.Constraint auf performFiltering gibt null auf erstes Zeichen zurück
Dies ist der Code des Filter:
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();
}
}
};
Kann mir jemand helfen, wie dieses Problem zu beheben, so dass die Filter beginnen auf dem ersten Zeichen Filterung?
Vielen Dank Sam, löste das Problem! – Rutger
das funktioniert super –