1. 程式人生 > >[Android] AutoCompleteTextView:自動完成輸入內容的控制元件

[Android] AutoCompleteTextView:自動完成輸入內容的控制元件

        AutoCompleteTextView是EditText的直接子類,與普通EditText的最大不同就是,在使用者輸入的過程中,可以列出可供選擇的輸入項,方便使用者。

        AutoCompleteTextView與普通EditText控制元件使用方法類似,只是需要為其指定一個Adapter物件,繫結可供選擇的輸入項。

        AutoCompleteTextView可實現一次自動完成的功能,而另一個控制元件MultiAutoCompleteTextView,可以連續多次自動完成,即在通過自動完成一個輸入項,接著輸入一個分隔符後,繼續通過自動完成連續輸入多個輸入項。只是要使用MultiAutoCompleteTextView類的setTokenizer方法指定分割符。

        兩種自動完成輸入內容的控制元件例項如下。

Main.java

package mobile.android.ch05.autotext;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;

public class Main extends Activity
{	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		String[] autoString = new String[]
		{ "聯合國", "聯合國安理會", "聯合國五個常任理事國", "bb", "bcd", "bcdf", "Google",
				"Google Map", "Google Android" };
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_dropdown_item_1line, autoString);
		
		// AutoCompleteTextView
		AutoCompleteTextView autoCompleteTextView =
				(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
		autoCompleteTextView.setAdapter(adapter);     // 繫結adapter
		
		// MultiAutoCompleteTextView
		MultiAutoCompleteTextView multiAutoCompleteTextView =
				(MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);
		multiAutoCompleteTextView.setAdapter(adapter);
		multiAutoCompleteTextView
				.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
	}
}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView
	    android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="AutoCompleteTextView" />
	<AutoCompleteTextView
	    android:id="@+id/autoCompleteTextView"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<TextView
	    android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="MultiAutoCompleteTextView" />
	<MultiAutoCompleteTextView
	    android:id="@+id/multiAutoCompleteTextView"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
</LinearLayout>

                程式執行效果如下圖


rr 的