9

Tôi đang truy xuất danh sách các chuỗi từ webservice và tôi muốn liệt kê chúng trên AutoCompleteTextField bất kể bộ lọc được xây dựng trong AutoCompleteTextField.AutoCompleteTextView - tắt lọc

Tôi làm như thế nào? Có cách nào để vô hiệu hóa nó bên trong lọc một cách dễ dàng (tốt nhất là không có subclassing) Tôi đã tải tất cả các kết quả của tôi vào một ArrayAdapter, vấn đề là một số người trong số họ không hiển thị vì lọc.

Nếu tôi đi sai hướng, hãy chỉ cho tôi đúng hướng.

Trả lời

1

Cuối cùng tôi đã được phân loại là ArrayAdapter, Tắt bộ lọc bằng cách ghi đè phương pháp getFilter và Thực hiện HTTPRequest trong các sự kiện "văn bản đã thay đổi".

+0

hi cảm ơn Alon i hav cùng prob. tôi sẽ biết ơn bạn nếu bạn có thể đăng một số mã liên quan. Cảm ơn trước –

+0

vui lòng thêm một số mã hoặc mô tả giải pháp của bạn. tôi hoàn toàn bị mắc kẹt về điều này. –

+0

@Rajivyadav Sẽ làm sớm –

14

Có lẽ @Alon có nghĩa là phân lớp ArrayAdapter, thay vì AutoCompleteTextView. Trong phương thức getFilter(), phương thức này phải trả lại bộ lọc tùy chỉnh, không thực hiện lọc nào cả (trong số performFiltering()). Có lẽ hiệu suất có thể là một vấn đề - bởi vì theread được sinh ra. Điều tốt nhất là lấy được từ TextEdit và thực hiện popup hoàn thành riêng. Nhưng đây là một lần nữa quá nhiều rắc rối cho tôi, cho đến nay. Cuối cùng, tôi đã làm một cái gì đó như sau và nó làm việc cho tôi. Bất kỳ phản hồi nào được đánh giá cao.

public class KArrayAdapter<T> 
extends ArrayAdapter<T> 
{ 
    private Filter filter = new KNoFilter(); 
    public List<T> items; 

    @Override 
    public Filter getFilter() { 
     return filter; 
    } 

    public KArrayAdapter(Context context, int textViewResourceId, 
      List<T> objects) { 
     super(context, textViewResourceId, objects); 
     Log.v("Krzys", "Adapter created " + filter); 
     items = objects; 
    } 

    private class KNoFilter extends Filter { 

     @Override 
     protected FilterResults performFiltering(CharSequence arg0) { 
      FilterResults result = new FilterResults(); 
       result.values = items; 
       result.count = items.size(); 
      return result; 
     } 

     @Override 
     protected void publishResults(CharSequence arg0, FilterResults arg1) { 
      notifyDataSetChanged(); 
     } 
    } 
} 

Hy vọng điều đó sẽ hữu ích.

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