2012/12/21

Android AutoComplete

AutoComplete是TextView的一種,比較不一樣地方在輸入文字會跳出下拉式選單,下拉式選單裡面都是比較符合輸入字串

實做方式就是先建立一個String 陣列,將使用者有可能輸入值都先預設好在這個陣列裡頭

透過ArrayAdapter將剛宣告的String陣列放入裡頭,在這邊比較不一樣的是,我們可以自己設計下拉式選單的頁面



Style.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF5500"
    android:padding="5dp"
    android:textColor="#00FF00"
    android:textSize="20sp" >
</TextView>

Strings.xml:
<resources>

    <string name="app_name">AutoComplete</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_auto_complete">AutoComplete</string>
    <string-array name="list">
        <item >Apple</item>
        <item >Air</item>
        <item >Ant</item>
    </string-array>

</resources>

Code:
package com.cyfang.autocomplete;

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

public class AutoComplete extends Activity {
    private AutoCompleteTextView autoComplete = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_auto_complete);
        autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        String[] str = getResources().getStringArray(R.array.list);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                R.layout.style, str);
        autoComplete.setAdapter(arrayAdapter);
    }
}


那不太會在xml檔案裡面建立String-array的人,可以將String宣告成一個陣列,在那個陣列裡面塞值,不過相對在記憶體空間使用率就佔比較多資源

package com.cyfang.autocomplete;

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

public class AutoComplete extends Activity {
    private AutoCompleteTextView autoComplete = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_auto_complete);
        autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        String[] str = new String[] { "Apple", "Air", "Ant", "Again" };
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                R.layout.style, str);
        autoComplete.setAdapter(arrayAdapter);
    }
}