大体タイトル通りの内容です。
スピナー(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行目は?はプラグインの関係で全角になっていますが半角でお願いします。
【実行結果】