ビューで動的に作成されたスピナーのリストがあります。スピナーをクリックすると、現在選択されているアイテムが返されます。この選択の前にあったアイテムを入手する方法はありますか?
onItemSelected() 以外のイベントはありますか?
ビューで動的に作成されたスピナーのリストがあります。スピナーをクリックすると、現在選択されているアイテムが返されます。この選択の前にあったアイテムを入手する方法はありますか?
onItemSelected() 以外のイベントはありますか?
間違った答え、質問の誤解
youronItemSelected()
が呼び出されると、position
引数が与えられます。position - 1
選択した要素の前の要素の位置を知るために使用できます。スピナー要素の配置が似ている要素の対応する配列がある場合はcorresponding_spinner_array[position-1]
、目的の要素が得られるはずです。
質問のリフレーミング後
単一の変数ですべての選択を覚えていないのはなぜですか?
更新された例:
String[] items = {"a","b","c"};
String selectedItem;
/*get your spinner element from your XML layout*/
/*or if you already have access to it, no need for this*/
Spinner spin = (Spinner) findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, items);
spin.setAdapter(aa);
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
selectedItem = items[position];
}
このコードを見てください:
Spinner sp= (Spinner) findViewById(R.id.type_spinner);
sp.setOnItemSelectedListener(this);
これは、選択したスピナー値のメソッドです:
値を選択しない場合は、デフォルトで最初の値が選択されます
public void onItemSelected(AdapterView<?> parent, View view, int position,
long arg3) {
String main = (int) parent.getSelectedItemId();
Log.e("Spinner Value",main);
}
おそらくそうではありませんが、自分の価値を維持する必要があります。AdapterView にはmOldSelectedPosition
フィールドがありますが、アクセスできません。