Androidアプリケーションでリスナーを用いてSpinnerコントロールが変更されたことを検出します。
Androidアプリケーションプロジェクトを新規作成します。
プロジェクトの設定
- Project name: SimpleSpinner3
- Build Target: Android 2.2
- Application name: SimpleSpinner3 App
- Package name: iPentec.SimpleSpinner3
- Activity: SimpleSpinner3
プロジェクトが新規作成されたら、res/layoutノードのmain.xmlを開きます。デザイナが表示されるので、SpinnerコントロールとTextViewコントロールを配置します。(下図参照)
コード
コードを実装します。
コード (SimpleSpinner3.java)
package iPentec.SimpleSpinner3;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.view.*;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class SimpleSpinner3 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);
spinner1.setOnItemSelectedListener(new SpinnerSelectedListener());
}
public class SpinnerSelectedListener implements AdapterView.OnItemSelectedListener{
public void onItemSelected(AdapterView parent,View view, int position,long id) {
// Spinner を取得
Spinner spinner = (Spinner) parent;
// 選択されたアイテムのテキストを取得
String str = spinner.getSelectedItem().toString();
TextView textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText(str);
}
// 何も選択されなかった時の動作
public void onNothingSelected(AdapterView parent) {
}
}
}
参考:無名クラスを使う場合
無名クラスを利用する場合は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);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// アイテムが選択された時の動作
public void onItemSelected(AdapterView parent,View view, int position,long id) {
// Spinner を取得
Spinner spinner = (Spinner) parent;
// 選択されたアイテムのテキストを取得
String str = spinner.getSelectedItem().toString();
TextView textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText(str);
}
// 何も選択されなかった時の動作
public void onNothingSelected(AdapterView parent) {
}
});
}
コード (string.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, SimpleSpiiner3!</string>
<string name="app_name">Simple Spinner Application 3</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:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content"></Spinner>
<TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
実行結果
アプリケーションを実行すると下図の画面が表示されます。
Spinnerコントロールをクリックすると下図のアイテム選択画面が表示されます。
アイテム選択画面でDuckの要素を選択すると下図の画面に変わります。Spinnerコントロールの値がDuckに変更されるとともに、TextViewコントロールにもDuckの文字列が表示されます。
Spinnerの選択要素をGooseに変えるとTextViewのテキストも選択した要素の文字列に変更されます。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-09
作成日: 2011-03-10