經過Google上網搜索時,只要輸入幾個文字,就會顯示相近的關鍵字讓你挑選,而這種效果其實在Android中是很是容易達到的。事實上,Android的AutoCompleteTextView Widget,只要搭配ArrayAdapter就能設計出相似Google搜索提示的效果。 java
本範例先在Layout當中佈局一個AutoCompleteTextView Widget,而後經過預先設置好的字符串數組,將此字符串數組放入ArrayAdapter,最後利用AutoCompleteTextView.setAdapter方法,就能夠讓AutoCompleteTextView Widget具備自動完成提示的功能。例如,只要輸入ab,就會自動帶出包含ab的全部字符串列表。 android
本範例程序主要示範AutoCompleteTextView用法,再次使用到ArrayAdapter,只要是有下拉菜單的項目,都必須使用到ArrayAdapter對象。此外,將ArrayAdapter添加AutoComplete TextView對象中,所使用的方法爲setAdapter,當中傳輸惟一的參數類型即爲字符串類型的ArrayAdapter。 數組
/* import程序略 */ app
public class EX04_13 extends Activity ide
{ 佈局
private static final String[] autoStr = new String[] 學習
{ "a", "abc", "abcd", "abcde" }; this
/** Called when the activity is first created. */ spa
@Override 設計
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/*加載main.xml Layout */
setContentView(R.layout.main);
/* new ArrayAdapter對象並將autoStr字符串數組傳入 */
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, autoStr);
/* 以findViewById()取得AutoCompleteTextView對象 */
AutoCompleteTextView myAutoCompleteTextView =
(AutoCompleteTextView) findViewById(R.id.myAutoCompleteTextView);
/* 將ArrayAdapter添加AutoCompleteTextView對象中 */
myAutoCompleteTextView.setAdapter(adapter);
}
}
有個相似AutoCompleteTextView的對象,稱爲MultiAutoCompleteTextView,它繼承了Auto CompleteTextView,差異在於它能夠在輸入框一直增長新的選擇值,其編寫方式也有些不一樣,必定要setTokenizer,不然會出現錯誤,如下範例是傳入CommaTokenizer類,結果會將本來選擇框裏的值日後加逗號及空白。
package irdc.ex04_13;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;
public class EX04_13 extends Activity
{
private static final String[] autoStr = new String[]
{ "a", "abc", "abcd", "abcde" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/*加載main.xml Layout */
setContentView(R.layout.main_1);
/* new ArrayAdapter對象並將autoStr字符串數組傳入 */
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, autoStr);
/* 以findViewById()取得MultiAutoCompleteTextView對象 */
MultiAutoCompleteTextView myAutoCompleteTextView =
(MultiAutoCompleteTextView)
findViewById(R.id.myAutoCompleteTextView);
/* 將ArrayAdapter添加AutoCompleteTextView對象中 */
myAutoCompleteTextView.setAdapter(adapter);
myAutoCompleteTextView.setTokenizer
(new MultiAutoCompleteTextView.CommaTokenizer());
}
}