コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

Androidアプリ入門 No.26 Spinnerのイベント処理

Spinner

Spinnerのイベント処理

Spinnerのイベントは、Spinnerをクリックし何かアイテムが選択されたときにおこる。先の例でイベント処理を追加する。MainActivity.javaは以下のようにする。

package sample.at;

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.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Spinner spinner = (Spinner) findViewById(R.id.spinner);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.test_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position,
                    long id) {
                TextView textView = (TextView) view;
                StringBuilder sb = new StringBuilder();
                sb.append("parent=").append(parent.getClass().getSimpleName())
                        .append(" position=").append(position).append(" id=").append(id)
                        .append(" textView.getText()=").append(textView.getText());
                Toast.makeText(getApplicationContext(), sb.toString(),
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                Toast.makeText(getApplicationContext(), "nothing", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

実行結果は以下。選択されたViewの情報を表示する。

ListViewのOnItemClickListenerで受け取るonItemClickメソッドと同様の引数となるが、onItemSelectedの定義は以下となる。

public abstract void onItemSelected(AdapterView<?> parent, View view, int position, long id)
引数 説明
parent 選択されたAdapterのビューとなる。要するにSpinnerを取得できる。
view 実際に選択されたビュー。
position アダプターの何番目が選択されたか。
id 選択された列のid。

onNothingSelectedメソッドもあるが、実際にエミュレータで動作させて動きを確認できなかった。