2025-02-17

這一章我們來介紹AutoCompleteTextView和MultiAutoCompleteTextView控件,這兩個控件都是EditText的子件,有什麼用呢?

就拿前幾章的西遊記裡的妖怪抓唐僧師徙來說,妖怪說他們人太多瞭,我記不清他們的名字瞭,好像裡面有一個是豬九戒的,不對,是豬八戒,兩個妖怪爭論不休,怎麼辦?沒關系,這就用到我們的自動提示控件瞭,當輸豬字的時候,看八戒名字出來瞭吧,這樣就不需要爭論瞭.簡單吧.

但兩者有什麼區別呢?看名字啊,AutoCompleteTextView控件是每次選一個,一次選一個.MultiAutoCompleteTextView控件呢,就是一次選幾個,當然也可以是一個,但一個就用不著這控件啦,呵呵,可以一次多選幾個,省點事.好瞭,我們來看

main.xml

view plain
<?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:text="這次妖怪們想抓" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    <AutoCompleteTextView android:layout_height="wrap_content" 
        android:id="@+id/autoCompleteTextView" android:layout_width="match_parent" 
        android:hint="請輸入您知道的西遊記人物" android:completionHint="我知道的人物" 
        android:completionThreshold="1"> 
    </AutoCompleteTextView> 
    <MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView" 
        android:layout_height="wrap_content" android:layout_width="match_parent" 
        android:hint="請輸入您知道的西遊記人物" android:completionHint="我知道的人物" 
        android:completionThreshold="1"></MultiAutoCompleteTextView> 
    <TextView android:layout_height="wrap_content" 
        android:layout_width="fill_parent" android:text="@string/hello" 
        android:id="@+id/text"></TextView> 
</LinearLayout> 
定義瞭兩個控件,一個AutoCompleteTextView控件,一個MultiAutoCompleteTextView控件

Activity的java代碼如下:

view plain
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.MultiAutoCompleteTextView; 
import android.widget.TextView; 
 
public class ButtonDemoActivity extends Activity 

    private TextView text = null; 
    private String[] item = { "唐僧", "孫悟空 ", "豬八戒", "沙和尚" }; 
    private AutoCompleteTextView autoCompleteTextView; 
    private MultiAutoCompleteTextView multiAutoCompleteTextView; 
    private ArrayAdapter adapter; 
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        // 通過ID查找到main.xml中的TextView控件 
        text = (TextView) findViewById(R.id.text); 
 
        // 通過ID查找到main.xml中的AutoCompleteTextView控件 
        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView); 
 
        // 設定一個Array適配器,將數組數據放入適配器中 
        adapter = new ArrayAdapter(this, 
                android.R.layout.simple_dropdown_item_1line, item); 
 
        // 對AutoCompleteTextView進行適配 
        autoCompleteTextView.setAdapter(adapter); 
         
        //設置AutoCompleteTextView的監聽器 
        autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() 
        { 
 
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
                    long arg3) 
            { 
                String str = "這次妖精把" + autoCompleteTextView.getText().toString() 
                        + "抓住瞭!"; 
                updateText(str); 
                 
            } 
        }); 
         
        // 通過ID查找到main.xml中的MultiAutoCompleteTextView控件 
        multiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView); 
         
        // 對MultiAutoCompleteTextView進行適配 
        multiAutoCompleteTextView.setAdapter(adapter); 
         
        //設置分隔符,默認的是逗號(,) 
        multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());    
         
        //設置MultiAutoCompleteTextView的監聽器 
        multiAutoCompleteTextView.setOnItemClickListener(new OnItemClickListener() 
        { 
 
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
                    long arg3) 
            { 
                String str = "這次妖精把" + multiAutoCompleteTextView.getText().toString() 
                        + "抓住瞭!"; 
                updateText(str); 
                 
            } 
        }); 
    } 
 
    private void updateText(String string) 
    { 
        // 將文本信息設置給TextView控件顯示出來 
        text.setText(string); 
    } 
 

好瞭,呵呵,代碼都寫完,選一個還是選幾個隨便你啦.圖如下:


 

 

光說西遊記的事瞭,很多都知道AutoCompleteTextView控件,但MultiAutoCompleteTextView有什麼作用呢?

其實你發短信群發的時候就用到MultiAutoCompleteTextView控件啦,不然,你的短信每次都輸一遍,多麻煩啊,用MultiAutoCompleteTextView就隻需要在收信人後面加號碼啦.

摘自:kangkangz4的專欄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *