2013-06-16 29 views
10

Tôi đã viết Bộ lọc tùy chỉnh cho một AutoCompleteTextView. Nó hoạt động tốt, nhưng một điều nhỏ. Ràng buộc trên performFiltering là null trên ký tự đầu tiên. Có nghĩa là quá trình lọc chỉ bắt đầu khi ký tự thứ hai được đưa vào AutoCompleteTextView.Ràng buộc khi thực hiệnNhãn trả về null trên ký tự đầu tiên

Đây là mã của bộ lọc:

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(); 
     } 

    } 
}; 

bất cứ ai có thể giúp tôi làm thế nào để khắc phục điều này, vì vậy Bộ lọc bắt đầu lọc theo ký tự đầu tiên?

Trả lời

23

Đặt threshold-1:

autoCompleteTextView.setThreshold(1) 

Chỉ định số lượng tối thiểu của các nhân vật người dùng phải gõ vào hộp soạn thảo trước khi danh sách thả xuống được hiển thị. Khi ngưỡng nhỏ hơn hoặc bằng 0, ngưỡng 1 sẽ được áp dụng.

+0

Cảm ơn bạn rất nhiều, đã giải quyết được vấn đề! – Rutger

+0

hoạt động tuyệt vời –

Các vấn đề liên quan