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属性を指定するところです。
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型にキャストしてあげれば選択された文字列を取得することができます。