1. 程式人生 > >Android開發之AutoCompleteTextView控制元件,自動提示

Android開發之AutoCompleteTextView控制元件,自動提示

AutoCompleteTextView是一個提供了聯想詞的控制元件,可以看做是EditText的升級版本

這裡寫圖片描述
佈局:

<AutoCompleteTextView
    android:id="@+id/editAuto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:completionThreshold="2" />
    //completionThreshold這個是屬性是說當你輸入幾個字元的時候才觸發聯想,這個是輸入一個就觸發

第一種方法

    //資料來源
    private String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
            "consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula",
            "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
            "placerat", "ante", "porttitor", "sodales", "pellentesque"
, "augue", "purus" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAutoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.editAuto); // 步驟1:設定介面卡
//這裡是list用的是系統的佈局樣式可以自己定義 mAutoCompleteTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); // 步驟2:設定觸發函式,採用TextWatcher, //實現繫結方法addTextChangedListener mAutoCompleteTextView.addTextChangedListener(this); } //接下來會重寫三個方法 /* * 步驟2.2,TextWatcher將需實現afterTextChanged(),beforeTextChanged(),onTextChanged( * )三個方法。本例無須處理after和before,只針對onTextChanged進行處理 */ public void afterTextChanged(Editable s) { // nothing to do } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // nothing to do } public void onTextChanged(CharSequence s, int start, int before, int count) { // do something }

第二種方法
可以使用XML檔案當做資料來源

<string-array name="str">  
    <item>China</item>  
    <item>Korean</item>  
    <item>Japan</item>  
</string-array>  

ArrayAdapter mArrayAdapter=ArrayAdapter.createFromResource(this, R.array.str,     android.R.layout.simple_spinner_item);  
        mArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
        mAutoCompleteTextView.setAdapter(mArrayAdapter);  

就是這麼簡單!!!