スピナーで選択されている要素の取得 - Android

AndroidアプリケーションでSpinnerコントロールを利用します。

Androidアプリケーションプロジェクトを新規作成します。

プロジェクトの設定

  • Project name: SimpleSpinner
  • Build Target: Android 2.2
  • Application name: SimpleSpinner2 App
  • Package name: iPentec.SimpleSpinner2
  • Activity: SimpleSpinner2
プロジェクトが新規作成されたら、/res/layout/ノードの main.xmlファイルを開きます。下図のデザイナ画面が表示されます。


左側のPaletteからコントロールを選択し、中央のデザイン画面にドラッグ&ドロップしてコントロールを配置します。


まず左側のPaletteから、Spnnerを選択しデザイン画面にドロップします。


次に、左側のPaletteから、Buttonをデザイン画面にドロップして配置します。


TextViewも同様にデザイン画面に配置します。

プログラム例

コード (SimpleSpinner2.java)

package iPentec.SimpleSpinner2;

import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;

public class SimpleSpinner2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initSpinners();
    }
    
    private void initSpinners() {
    	Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
    	String[] labels = getResources().getStringArray(R.array.item_label);
    	ArrayAdapter<String> adapter
          = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);
    	spinner1.setAdapter(adapter);
    	
    	adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    }

    public void onClick_Button1(View view){
    	Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
    	TextView textView1 = (TextView)findViewById(R.id.textView1);
    	
    	String str = spinner1.getSelectedItem().toString();
    	textView1.setText(str);
    }
}

解説

onCreate()メソッドでinitSpinners()メソッドを呼び出します。

initSpinners()メソッドにて、スピナーコントロールを取得します。
Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);

getResource()メソッドを呼び出し、リソースを取得します。getStringArray()メソッドを呼び出し、string.xmlに記載したスピナーの項目要素のXMLを読み込みます。
String[] labels = getResources().getStringArray(R.array.item_label);

読み込んだスピナーの項目要素のXMLをArrayAdapter<String>クラスに設定します。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);

スピナーコントロールに項目要素を設定したArrayAdapter<String>クラスのインスタンスを適用します。
spinner1.setAdapter(adapter);

ArrayAdapter<String>クラスのインスタンスのsetDropDownViewResource()メソッドを呼び出し、スピナーコントロールのレイアウトを変更します。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

コード (string.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, SimpleSpinner2!</string>
    <string name="app_name">SimpleSpinner2 App</string>

	<string-array name="item_label">
		<item>Penguin</item>
		<item>Duck</item>
		<item>Goose</item>
	</string-array>
</resources>

コード(main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner1"></Spinner>
<Button android:layout_height="wrap_content" android:id="@+id/button1" android:layout_width="wrap_content" android:text="Button" android:onClick="onClick_Button1"></Button>
<TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

実行結果

アプリケーションを起動すると下図の画面が表示されます。


スピナーをクリックすると下図の画面が表示されます。選択肢の"Goose"をクリックします。


スピナーの選択項目が"Goose"に変更されます。


ボタンをクリックします。スピナーで選択した項目の文字列がTextViewに表示されます。

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-09
作成日: 2011-03-09
iPentec all rights reserverd.