2011-07-07 22 views
7

Làm cách nào để hiển thị một số đề xuất mặc định cho AutoCompleteTextView trước khi người dùng nhập bất kỳ thứ gì? Tôi không thể tìm thấy một cách để làm điều này ngay cả với việc tạo ra một lớp tùy chỉnh mở rộng AutoCompleteTextView.Android: AutoCompleteTextView với các đề xuất mặc định

Tôi muốn hiển thị đề xuất cho các giá trị đầu vào phổ biến để lưu người dùng khỏi nhập.

Mọi đề xuất?

Trả lời

-1

Nếu bạn không cần nó là động Tôi sẽ đi bằng cách có một mảng chuỗi trong các nguồn tài nguyên, và sau đó chỉ cần tải mảng khi AutoCompleteTextView là về để được xem. Giống như:

public class CountriesActivity extends Activity { 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.countries); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
     AutoCompleteTextView textView = (AutoCompleteTextView) 
       findViewById(R.id.countries_list); 
     textView.setAdapter(adapter); 
    } 

    private static final String[] COUNTRIES = new String[] { 
     "Belgium", "France", "Italy", "Germany", "Spain" 
    }; 
} 

Mà có thể được tìm thấy trên http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

Một cách khác mà tôi đã thực hiện một vài lần cho phép nó để học hỏi từ người dùng là o sử dụng một kết nối cơ sở dữ liệu với IE một con trỏ đơn giản. Khi bạn tạo db, bạn có thể chèn một số giá trị mặc định. Here's một ví dụ với việc sử dụng bộ chuyển đổi con trỏ đơn giản: http://androidcommunity.com/forums/f4/how-to-use-autocompletetextview-with-simplecursoradapter-15875/

Sửa 1:

Một ý tưởng để hiển thị danh sách trước khi người dùng bắt đầu loại là phải có một listview đơn giản dưới EditText. Không chắc chắn nếu bạn có thể gọi autocompletetextview để hiển thị các đề xuất, nên có thể bằng cách nào đó. Có lẽ bạn cần tạo lớp autocompletetextiew của riêng bạn.

+0

David, câu trả lời của bạn sẽ chỉ hiển thị danh sách khi người dùng bắt đầu nhập. Những gì tôi đang tìm kiếm là hiển thị danh sách các đề xuất (không cần phải động) ngay cả trước khi người dùng bắt đầu nhập. Bất kỳ ý tưởng? –

+0

Ồ, tôi đoán tôi hơi mệt một chút. Tôi sẽ thấy những gì tôi có thể nghĩ ra. Nếu tôi nghĩ ra một cái gì đó mới, tôi sẽ chỉnh sửa câu trả lời của mình. –

4

Bạn nên phân loại AutoCompleteTextView và ghi đè enoughToFilter() để trả lại true mọi lúc. Sau đó bạn có thể gọi performFiltering("",0) (đó là một chức năng được bảo vệ, vì vậy bạn có thể xuất cuộc gọi này qua một chức năng công cộng trong lớp của bạn).

Something như thế: câu trả lời

public class ContactsAutoCompleteTextView extends AutoCompleteTextView { 


    public ContactsAutoCompleteTextView(Context context) { 
     super(context); 
    } 

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean enoughToFilter() { 
     return true; 
    } 

    public void temp() { 
     performFiltering("",0); 
    } 
} 
2

Itay Kahana là thực sự chính xác. Điều duy nhất tôi sẽ thêm là thay vì tạo một hàm temp(), để ghi đè lên hàm onFocusChanged. Cá nhân tôi đã sử dụng các mục sau:

@Override 
     protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect) { 
      if(focused) 
       performFiltering("", 0); 
      super.onFocusChanged(focused, direction, previouslyFocusedRect); 
     } 
Các vấn đề liên quan