Несколько блесен и OnItemSelected - PullRequest
       18

Несколько блесен и OnItemSelected

36 голосов
/ 25 февраля 2011

У меня есть два счетчика, которые запускают событие 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;
    }

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

Ответы [ 3 ]

79 голосов
/ 25 февраля 2011

использование:

switch(parent.getId()) {
    ...
}

вместо того, что вам нужно. view в вашем параметре - это фактическая «строка» (т. Е. Выбранный дочерний элемент элемента счетчика), а родительский элемент - это фактический элемент «счетчик», который вам нужен.

3 голосов
/ 25 февраля 2011

Spinner является подклассом AdapterView.Родительский объект, переданный в метод, является счетчиком, в котором был выбран элемент.

0 голосов
/ 11 июня 2019

Используйте приведенный ниже код, если у вас есть несколько счетчиков в одном упражнении, и вы используете метод переопределения 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
 }

}

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

...