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(); } }); } }
ListViewのOnItemClickListenerで受け取るonItemClickメソッドと同様の引数となるが、onItemSelectedの定義は以下となる。
public abstract void onItemSelected(AdapterView<?> parent, View view, int position, long id)
引数 | 説明 |
---|---|
parent | 選択されたAdapterのビューとなる。要するにSpinnerを取得できる。 |
view | 実際に選択されたビュー。 |
position | アダプターの何番目が選択されたか。 |
id | 選択された列のid。 |
onNothingSelectedメソッドもあるが、実際にエミュレータで動作させて動きを確認できなかった。