Множество прядильщиков и onItemSelected
У меня есть два прядильника, которые вызывают событие onItemSelected. Вопрос: Как я могу узнать, какой из них вызвал такое событие? До сих пор я пытался:
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;
}
Но отображается только первый журнал, поэтому в коммутаторе нет совпадения.
Ответы
Ответ 1
использование:
switch(parent.getId()) {
...
}
- это то, что вам нужно.
view
в вашем параметре является фактической "строкой" (т.е. Щелкнутым дочерним элементом элемента spinner), а родительский - это фактический "счетчик", который вы используете.
Ответ 2
Spinner - это подкласс AdapterView. Родительский объект, переданный в метод, является счетчиком, в котором был выбран элемент.
Ответ 3
Используйте приведенный ниже код, если у вас есть несколько счетчиков в одном действии, и вы используете метод переопределения 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
}
}
либо вы можете использовать переключатель