Android UI 基本 ドロップダウンリスト[Spinner]

この記事は2016年9月12日に書かれたものです。内容が古い可能性がありますのでご注意ください。


Androidアプリを作る上で必要な基本的なUIの使い方を解説します。

Spinner

ユーザに複数の選択肢から一つ選択してもらう時に用いるウィジェットがSpinnerです。
選択肢はドロップダウンリストで表示されます。HTMLでいうところのselect+optionです。
例えば住所登録で都道府県を選択するような場面でよく見ますね。

選択肢はJavaコード上に配列あるいはコレクションで定義しても良いのですが、
アプリの状態によらない定数文字列の場合はxmlリソースに定義しておく方が良いでしょう。

res/values/arrays.xmlに次のように記述しておきます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="spinner_items">
        <item>東京都</item>
        <item>神奈川県</item>
        <item>千葉県</item>
        <item>埼玉県</item>
        <item>茨城県</item>
        <item>栃木県</item>
        <item>群馬県</item>
    </string-array>
</resources>

string-array要素の子に選択肢をitem要素で並べます。

次にレイアウトxmlにSpinnerを配置します。

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/spinner_items"
        />

ポイントは、android:entries属性に上記のstring-arrayのname属性を指定するところです。

android_spinner_1

android_spinner_2

OnItemSelected

選択肢が選択された時の処理は、AdapterView.OnItemSelectedListenerインターフェースを実装して
Spinner#setOnItemSelectedListenerでspinnerに渡してあげることで実装できます。

        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                String item = (String) adapterView.getSelectedItem();
                Toast.makeText(MainActivity.this, item, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                //何も選択されなかった時の処理
            }
        });

onItemSelectedの第一引数はspinner自身を指します。
getSelectedItemを呼ぶことで選択肢のオブジェクトが得られるので
それをString型にキャストしてあげれば選択された文字列を取得することができます。

  • このエントリーをはてなブックマークに追加

PAGE TOP