2014年5月29日木曜日

AndroidのSpinnerを使う

目次へ



次の3点について、書きます。
  • Spinnerの表示項目をリソースファイルだけで設定する方法
  • 表示項目をプログラムで動的に作成する方法
  • 選択された時のリスナ


■■■■リソースだけで表示項目を設定する方法■■■■

まずプロンプト(項目の上に表示する文字列)と選択項目とをres/values/strings.xmlにstringとstring-arrayとして登録しておきます。
ただ、なぜか、プロンプトがどうしても表示されませんでした。
その理由がわかったら、ここに追加します。


<string name="prompt">項目を選択してください</string>
<string-array name="kinds">
    <item >項目1</item>
    <item >項目2</item>
    <item >項目3</item>
</string-array>



次にres/layout/activity_main.xmlにSpinnerを登録します。


<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/kinds"    ← string-arrayのname
    android:prompt="@string/prompt" /> ← stringのname



■■■■表示項目をプログラムで動的に作成し、項目が選択された時Toast表示■■■■

リソースのレイアウト(res/layout/activity_main.xml)ではentriesとpromptはなしでSpinnerを登録します。


<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


ActivityのonCreateでは、
  • ArrayAdapterを使って選択項目を登録し、
  • プロンプトを登録し、
  • 項目が選択されたらそれを表示します


protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 strs = getResources().getStringArray(R.array.kinds);

 //--------------------------スピナー取り出し
 spinner = (Spinner)findViewById(R.id.spinner1);

 //--------------------------スピナー用アダプタ
 ArrayAdapter adapter = new ArrayAdapter
   (this,android.R.layout.simple_spinner_item, strs);
 spinner.setAdapter(adapter);


 //-------------------------- Spinnerのレイアウトとプロンプト
 adapter.setDropDownViewResource
          (android.R.layout.simple_spinner_dropdown_item);
 spinner.setPromptId(R.string.prompt);

 //-------------------------- Spinnerが選択された時の処理
 spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
  public void onItemSelected(AdapterView parent, 
                View view, int position, long id) {
   String item = (String) spinner.getSelectedItem();
   Toast.makeText(MainActivity.this, 
                                      item, Toast.LENGTH_LONG).show();
  }
  public void onNothingSelected(AdapterView parent) {
  }
 });
}



にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

0 件のコメント:

コメントを投稿