Napisałem niestandardowy filtr dla AutoCompleteTextView. To działa dobrze, ale jedna mała rzecz. Wiązanie do funkcji performFiltering ma wartość zerową na pierwszym znaku. Oznacza to, że proces filtrowania rozpoczyna się dopiero po umieszczeniu drugiego znaku w widoku AutoCompleteTextView.Ograniczenie dla funkcji performFiltering zwraca null dla pierwszego znaku
Jest to kod z filtrem:
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();
}
}
};
Czy ktoś może mi pomóc jak to naprawić, więc filtr zaczyna filtrowanie pierwszego znaku?
Wielkie dzięki Sam, rozwiązałem problem! – Rutger
który działa świetnie –