2013-06-16 5 views
10

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?

Antwort

23

die threshold-1 Set:

autoCompleteTextView.setThreshold(1) 

die Mindestanzahl der Zeichen Gibt der Benutzer die Eingabefeld eingeben muss, bevor der Dropdown-Liste angezeigt wird. Wenn der Schwellenwert kleiner oder gleich 0 ist, wird ein Schwellenwert von 1 angewendet.

+0

Vielen Dank Sam, löste das Problem! – Rutger

+0

das funktioniert super –