【Android】スピナー(Spinner)の使い方を紹介


大体タイトル通りの内容です。

スピナー(Spinner)の使い方を紹介してみます。
聞きなれない単語だと思いますが、ブラウザフォームでよくみるドロップダウンメニューみたいなものを作るビューですね。
使い方がリストビュー(ListView)にとてもよく似ています。


リストに使用する配列とアダプタ(ArrayAdapter)を作成する


ListViewを使いためには3つの手順が必要です。
大まかにはこのような感じに。
①リストに表示する用の配列を用意
②配列とスピナーに使用する表示形式を指定したアダプタを作成
③Spinnerを作成、アダプタをSpinnerに設定

//①
String[] str = {  "レティ","橙","アリス","虹川","妖夢","ゆゆ" };
//②
ArrayAdapter<String> ad = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, str );
ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
//③
Spinner sp = new Spinner(this);
sp.setAdapter(ad);



上記の例では、スピナーの表示形式はAndroidni標準で用意されている形式
android.R.layout.simple_spinner_item
android.R.layout.simple_spinner_dropdown_item
を使用しています。

スピナーが選ばれた時のリスナーを登録する


スピナーが選ばれた時の処理を追加します。
setOnItemSelectedListenerを使ってリスナを登録します。
登録するリストはOnItemSelectedListenerインターフェースのメソッドが実装されたものを用意します。

onNothingSelectedメソッドは既に選択された項目をクリックした時に呼び出され、
その後onItemSelectedメソッドが呼び出されます。
class SampleListener implements OnItemSelectedListener{
  @Override
  onItemSelected(AdapterView<?> v, View iv, int pos,long id) {
  	/*ここにクリックされた時の処理*/
  }
  @Override
  public void onNothingSelected(AdapterView<?> arg0) {	}
}



サンプルプログラム


※importは省略
public class Sample20120816Activity extends Activity {

  TextView tv;
  Spinner sp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation( LinearLayout.VERTICAL );
        setContentView(ll);

        tv = new TextView(this);

        sp = new Spinner(this);
        String[] str = {  "レティ","橙","アリス","虹川","妖夢","ゆゆこ" };
        ArrayAdapter<String> ad = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, str );
        ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
        sp.setAdapter(ad);

        ll.addView(tv);
        ll.addView(sp);

        sp.setOnItemSelectedListener( new SampleListener() );

    }

    class SampleListener implements OnItemSelectedListener{

    @Override
    public void onItemSelected(AdapterView<?> v, View iv, int pos,long id) {
      TextView tmp = (TextView)iv;
      tv.setText( tmp.getText() + "が選択されました。" );
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {  }

    }
}


※31行目は?はプラグインの関係で全角になっていますが半角でお願いします。

【実行結果】
【Android】スピナー(Spinner)の使い方01【Android】スピナー(Spinner)の使い方02【Android】スピナー(Spinner)の使い方03


関連記事

コメントは受け付けていません。