はスピナーのドロップダウンリストに表示する各アイテムをリソースファイルで定義しましたが、今回はArrayAdapterクラスを利用してコードから指定したいと思います。
1,アクティビティのレイアウトにスピナーを追加します。
res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <Spinner android:id="@+id/Spinner01" android:layout_width="wrap_content" android:layout_height="wrap_content" </Spinner> </LinearLayout>
2,スピナーのドロップダウンリストに表示するプロンプトを定義します。
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="SpinnerPrompt">選択してください。</string> : </resources>
3,アクティビティクラス
ArrayAdapterクラスを使用してスピナーの設定を行います。
ArrayAdapterクラスのコンストラクタは以下のようなものがあります。
ArrayAdapter(Context context, int textViewResourceId) ArrayAdapter(Context context, int textViewResourceId, T[] objects) ArrayAdapter(Context context, int textViewResourceId, List第1引数contextにはContextオブジェクトを指定します。objects)
第2引数textViewResourceIdにはスピナーに使用するレイアウトファイルのIDを指定します。
今回はtextViewResourceIdには、アンドロイドで定義されているandroid.R.layout.simple_spinner_itemを指定します。
第3引数objectはドロップダウンリストに表示するアイテムを指定します。
ドロップダウンリストに表示するアイテムはObject型の配列かList インターフェイス実装クラスになっています。
それぞれの要素がCharSequence インターフェイスを実装したクラスである場合は、指定した値をそのまま表示しますが
そうでなければ要素のtoString()の結果を出力します。
またArrayAdapter#setDropDownViewResource()メソッドでドロップダウンリスト部分に使用するレイアウトファイルのIDを指定します。
今回は、アンドロイドで定義されているandroid.R.layout.simple_spinner_dropdown_itemを指定します。
あとは作成したAdapterオブジェクトを、Spinner#.setAdapter()メソッドでスピナーに設定します。
MainActivty.java
package my.study.android; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; public class MainActivty extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ArrayAdapter を作成 String items[] = {"items1","items2","items3"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items); //または //ArrayAdapter<String> adapter // = new ArrayAdapter<string>(this, android.R.layout.simple_spinner_item) //adapter.add("item1"); //adapter.add("item2"); //adapter.add("item3"); // ドロップダウンリストのレイアウトを設定 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //spinnerにAdapterを設定 Spinner spinner = (Spinner)this.findViewById(R.id.Spinner01); spinner.setAdapter(adapter); // Spinner に表示させるプロンプトを設定 spinner.setPromptId(R.string.SpinnerPrompt ); // スピナーのアイテムが選択された時に呼び出されるコールバックリスナーを登録します spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ //Spinnerのドロップダウンアイテムが選択された時 public void onItemSelected(AdapterView parent, View viw, int arg2, long arg3) { Spinner spinner = (Spinner)parent; String item = (String)spinner.getSelectedItem(); Toast.makeText(MainActivty.this, item, Toast.LENGTH_LONG).show(); } //Spinnerのドロップダウンアイテムが選択されなかった時 public void onNothingSelected(AdapterView parent) { }}); } }
【関連項目】
Android Spinner(スピナー)を使用する その1
Android Spinner(スピナー)を使用する その2(ArrayAdapter)
Android Spinner(スピナー)を使用する その3(UIカスタマイズ)
Android Spinner(スピナー)を使用する その4(SimpleAdapter)
Android Spinner(スピナー)を使用する その5(SimpleCursorAdapter)
0 件のコメント:
コメントを投稿