Подтвердить что ты не робот

Множество прядильщиков и 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;
    }

Но отображается только первый журнал, поэтому в коммутаторе нет совпадения.

4b9b3361

Ответ 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
 }

}

либо вы можете использовать переключатель