Spinner(スピナー)-ドロップダウンリスト・ウィジェット


Spinnerウィジェットは、ドロップダウンリストを表示するためのウィジェットです。

Spinnerウィジェットは、ListViewウィジェットと同じく、AdapterViewクラスのサブクラスのサブクラスです。

ListViewと同じく、ドロップダウンにて表示されるデータを指定するのに、Adapterオブジェクトを使います。

Spinnerウィジェットの基本形

Spinnerウィジェットの、基本的な使い方のサンプルを、以下に示します。

リスト1(SpinnerSample1.java)

このプログラムを実行すると、以下の図のようなSpinnerウィジェットが、画面に表示されます。

 

 

Spinnerウィジェットをクリックすると、以下のようなリストが表示されます。

 

 

リストの項目が選択されると、39~41行目のコードにより、トーストが表示されます。

33行目のOnItemSelectedListenerは、リスト項目が選択された時に実行されるonItemSelectedメソッドや、 リスト項目が選択された時に実行されるonNothingSelectedメソッドを持つ、イベントリスナーです。

このイベントリスナーのふるまいは、ListViewの時と同じです。

 

29行目のコメントをはずして、setDropDownViewResourceメソッドを有効にすると、 Spinnerウィジェットをクリックした時のリストは、以下のように表示されるようになります。

 

 

setDropDownViewResourceメソッドは、Spinnerウィジェットがドロップウンした時の画面のレイアウトを、指定します。

android.R.layout.simple_spinner_dropdown_item」は、アンドロイドにあらかじめ定義されているレイアウトファイルのIDです。

 

30行目のコメントをはずして、setPromptメソッドを有効にすると、 Spinnerウィジェットをクリックした時のリストは、以下のように表示されるようになります。

 

 

31行目のコメントをはずして、setSelectionメソッドを有効にすると、2番目のリスト項目「abc」が選択された状態で表示されます。

setSelectionメソッドも、ListViewで出てきましたが、 リスト項目内の引数で指定された値+1の項目に、カーソルを移動するメソッドです。

応用パターン

ListViewとAdapterクラスとの関係がわかっていれば、 同じようにSpinnerとAdapterクラスを組み合わせて、いろいろな使い方ができます。

SimpleAdapterクラスを使う

「ListViewとListActivity(3)-応用編」の 「SimpleAdapterクラス-もっと簡単にレイアウトをカスタマイズ」 での例を、Spinnerウィジェットを使って応用してみます。

リスト2(1)-レイアウトファイル(list_row.xml)

リスト2(2)-Javaソース(SpinnerSample2.java)

このプログラムを実行すると、以下の図のように表示されます。

 

 

Spinnerウィジェットをクリックすると、以下のようなリストが表示されます。

 

 

自前のレイアウトファイルで、Spinnerウィジェットの表示をカスタマイズできる事がわかります。

実行ボタンをクリックすると、対応するインテントが実行される事となります。

インテントについては「謎めいたインテント」を参照して下さい。

Spinnerとリソース

「ListViewとListActivity(3)-応用編」の「ArrayAdapterクラスとリソース」での例のように、 Spinnerウィジェットでも、レイアウトファイルのウィジェットの属性に配列データのリソースファイルを指定して、表示させる事ができます。

以下に、その例を示します。

リスト3(1)-レイアウトファイル(list_row.xml)

リスト3(2)-文字列リソースファイル(res/values/strings.xml)

リスト3(3)-配列データのリソースファイル(res/values/arrays.xml)

リスト3(4)-Javaソース(SpinnerSample3.java)

このプログラムを実行すると、以下の図のように表示されます。

 

 

Spinnerウィジェットをクリックすると、以下のようなリストが表示されます。

 

 

リソースファイルの追加,修正だけで、 プロジェクト作成時のJavaソースにいっさい手を加える事なく、Spinnerウィジェットを表示する事ができます。

参考URL

 

ページのトップへ戻る