Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

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

android_android-autocompletetext_01

テキストフィールドでテキスト入力時に入力補完(オートコンプリート)機能を実行させたい場合は、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. 入力補完リストを表示する

入力補完機能を使用するためには、ArrayAdapterAutoCompleteTextViewsetAdapter()を使います。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」とテキスト入力すると、以下のように入力補完リストが表示されることがわかります。

 

android_android-autocompletetext_01

 

広 告