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