[Android] AutoCompleteTextView:テキストの入力補完を行う

テキストフィールドでテキスト入力時に入力補完(オートコンプリート)機能を実行させたい場合は、EditTextのサブクラスであるAutoCompleteTextViewを使うことで実現できます。ここでは、AutoCompleteTextViewの使い方について説明します。
広 告
目次
前提条件
動作確認端末
1. AutoCompleteTextViewを宣言する
入力補完が実行されるテキストフィールドを実装するためには、< AutoCompleteText >
タグを使います。
<AutoCompleteText>タグを使ったサンプルコード
<AutoCompleteTextView android:id="@+id/auto_complete_text" android:layout_width="match_parent" android:layout_height="wrap_content" />
2. 入力補完リストを作成する
ユーザがテキスト入力した時に表示される入力補完リストは、JavaコードからString型の配列形式で設定する必要があります。配列の各要素が1行に相当します。ここでは、リソースXMLファイルにて入力補完リストを定義し、それをJavaから読み込み、入力補完リストのString配列に変換する方法を説明します。
リソースXMLから配列を作るためには、<string-array>
タグを使用します。例えばstring.xml
に以下のように記述します。
res/values/string.xml
<resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> ... </string-array> </resources>
これをJavaから以下のようなコードで読み込むことができます。
リソースXMLの<string-array>タグを読み込むコード
final String[] countries = getResources().getStringArray(R.array.countries_array);
3. 入力補完リストを表示する
入力補完機能を使用するためには、ArrayAdapter
とAutoCompleteTextView
のsetAdapter()を使います。ArrayAdapter
には入力補完リストのString配列を設定しておきます。
例として、Activity
もしくはFragment
で以下のようなコードを記述します。
// AutoCompleteTextViewを読み込む final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.auto_complete_text); // 入力補完リストを読み込む final String[] countries = getResources().getStringArray(R.array.countries_array); // ArrayAdapterを作成 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, countries); // ViewにAdapterを設定 textView.setAdapter(adapter);
android.R.layout.simple_list_item_1
は、Androidによって提供されているTextView
を1つだけをもつレイアウトです。
アプリを実行し、「An」とテキスト入力すると、以下のように入力補完リストが表示されることがわかります。
