最終更新:
moonlight_aska 2011年07月24日(日) 09:59:48履歴
オートコンプリート機能(*1)を実現する方法は2通りある.

- オートコンプリートテキストビュー(AutoCompleteTextView)クラス
- マルチオートコンプリートテキストビュー(MultiAutoCompleteTextView)クラス
- res/layout/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="wrap_content"
android:layout_height="wrap_content"
android:text="@string/msg_lable"
/>
<AutoCompleteTextView android:id="@+id/actview_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
- AutoCompleteTextViewActivity.java
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したAutoCompleteTextViewのインスタンスを取得する.
- ArrayAdapterのインスタンスを生成する.
- AutoCompleteTextView#setAdapterメソッドで, アダプターを設定する.
package com.moonlight_aska.android.autocompletetextview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class AutoCompleteTextViewActivity extends Activity {
private static final String[] countryList = new String[] {
"Japan", "Korea", "China", "Italy", "France", "Germany", "Spain"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// AutoCompleteTextViewのインスタンスを取得
AutoCompleteTextView actView = (AutoCompleteTextView)findViewById(R.id.actview_id);
// Adapterのインスタンスを生成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, countryList);
actView.setAdapter(adapter);
}
}

自動的に区切り(例","(カンマ))を追記し, 区切りの後ろでも入力補完が行える.

- res/layout/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="wrap_content"
android:layout_height="wrap_content"
android:text="@string/msg_lable"
/>
<MultiAutoCompleteTextView android:id="@+id/mactview_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
- MultiAutoCompleteTextViewActivity.java
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したMultiAutoCompleteTextViewのインスタンスを取得する.
- ArrayAdapterのインスタンスを生成する.
- AutoCompleteTextView#setAdapterメソッドで, アダプターを設定する.
- MultiAutoCompleteTextView#setTokenizerメソッドで, 区切りを設定する.
package com.moonlight_aska.android.multiautocompletetextview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;
public class MultiAutoCompleteTextViewActivity extends Activity {
private static final String[] countryList = new String[] {
"Japan", "Korea", "China", "Italy", "France", "Germany", "Spain"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// MultiAutoCompleteTextViewのインスタンスを取得
MultiAutoCompleteTextView mactView = (MultiAutoCompleteTextView)findViewById(R.id.mactview_id);
// Adapterのインスタンスを生成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, countryList);
mactView.setAdapter(adapter);
mactView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}

コメントをかく