Android開發之AutoCompleteTextView控制元件,自動提示
阿新 • • 發佈:2019-02-10
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);
就是這麼簡單!!!