Есть ли способ получить объект Spinner, который был изменен в OnItemSelectedListener? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть массив спиннеров с тем же OnItemSelectedListener, но мне нужно знать, какой спиннер был выбран (предпочтительно, где я могу получить индекс массива), чтобы я мог передать его как индекс другого массива.

Это мои счетчики:

insulSpinners = new Spinner[6];
insulSpinners[0] = (Spinner) v.findViewById(R.id.insulSpin1);
insulSpinners[1] = (Spinner) v.findViewById(R.id.insulSpin2);
insulSpinners[2] = (Spinner) v.findViewById(R.id.insulSpin3);
insulSpinners[3] = (Spinner) v.findViewById(R.id.insulSpin4);
insulSpinners[4] = (Spinner) v.findViewById(R.id.insulSpin5);
insulSpinners[5] = (Spinner) v.findViewById(R.id.WireSpin);

awcSpinners = new Spinner[6];
awcSpinners[0] = (Spinner) v.findViewById(R.id.awcSpin1);
awcSpinners[1] = (Spinner) v.findViewById(R.id.awcSpin2);
awcSpinners[2] = (Spinner) v.findViewById(R.id.awcSpin3);
awcSpinners[3] = (Spinner) v.findViewById(R.id.awcSpin4);
awcSpinners[4] = (Spinner) v.findViewById(R.id.awcSpin5);
awcSpinners[5] = (Spinner) v.findViewById(R.id.awcSpin6);

for (int i = 0; i < 6; i++) {
    insulSpinners[i].setOnItemSelectedListener(insuls);
    awcSpinners[i].setOnItemSelectedListener(awcs);
    }

Мне нужен n-й счетчик insulSpinners от слушателя, чтобы я мог применить функцию к n-му счетчику awcSpinners.Текст, выбранный на insulSpinner, используется в функции.Любые идеи будут оценены.

1 Ответ

0 голосов
/ 30 мая 2018

OnItemSelectedListener имеет два метода.

onItemSelected(AdapterView<?> parent, View view, int position, long id)
onNothingSelected(AdapterView<?> parent)

В обоих случаях вы можете использовать использованный счетчик AdapterView<?> parent.

Вы можете добавить индекс каждого счетчика в качестве тега, а затем проверить тег.Из тега вы можете вывести индекс счетчика.

Например

int[] ids = {R.id.insulSpin1, R.id.insulSpin2, ...}
for (int idx = 0; idx < ids.length(); i++) {
  Spinner spinner = (Spinner) v.findViewById(ids[idx])
  spinner.setTag(idx); // you may need to wrap it in an Integer object
  insulSpinners[idx] = spinner
}

// and then in your onItemSelected method callback
void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  int tag = (Integer) parent.getTag()
  Spinner selectedSpinner = insulSpinners[tag]
  // do something...
}
...