OnItemSelectedイベントをトリガーする2つのスピナーがあります。問題は、どのイベントがそのようなイベントをトリガーしたかをどのようにして知ることができるかです。これまでのところ、私は試しました:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
Log.d("form","onitemselected");
switch (view.getId()) {
case R.id.region_spinner:
Region r = (Region)sregions.getSelectedItem();
Log.d("form","regionid:" + r.id);
break;
case R.id.state_spinner:
Log.d("form","state id:");
break;
}
ただし、最初のログのみが表示されるため、スイッチに一致するものはありません。
使用する:
switch(parent.getId()) {
...
}
代わりにあなたが必要なものです。パラメータのview
は実際の「行」(つまり、スピナーアイテムのクリックされた子)で、親は実際の「スピナー」です。
Spinnerは、AdapterViewのサブクラスです。メソッドに渡される親オブジェクトは、アイテムが選択されたスピナーです。
1つのアクティビティに複数のスピナーがあり、onItemSelectedオーバーライドメソッドを使用している場合は、以下のコードを使用します
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
if (parent!!.id == R.id.spinner_1) {
// first spinner selected
} else if (parent!!.id == R.id.spinner_2) {
// second spinner selected
}
}
スイッチケースも使えます
KotlinにXMLをインポートすると、次のように使用できます。
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id:
Long) {
when (parent)
firstSpinner -> {
// first spinner selection
}
secondSpinner -> {
// second spinner selected
}
}
}