Как получить позицию предмета из ID предмета в Android Spinner? - PullRequest
4 голосов
/ 25 мая 2010

Мне нужно получить позицию предмета в счетчике, зная, что это ID. Я пытался сделать это с классами Spinner и SpinnerAdapter, но там нет соответствующих методов.

Спасибо,

Александр

Ответы [ 5 ]

6 голосов
/ 03 июня 2011

Попробуйте это:

static final int getAdapterPositionById(final Adapter adapter, final long id) throws NoSuchElementException {
    final int count = adapter.getCount();

    for (int pos = 0; pos < count; pos++) {
        if (id == adapter.getItemId(pos)) {
            return pos;
        }    
    }

    throw new NoSuchElementException();
}

Это достаточно универсально для работы с любым типом адаптера, который поддерживает идентификаторы (например, реализует Adapter#getItemId(int position) в значимом смысле)

6 голосов
/ 03 июня 2011

Вот как я это сделал вчера вечером в первый раз:

Spinner mySpn = (Spinner) findViewById(R.id.my_spinner);
String spnItem = (String) mySpn.getItemAtPosition(mySpn.getSelectedItemPosition());
4 голосов
/ 25 мая 2010

Вы можете запросить выбранную позицию по Spinner.getSelectedItemPosition()

или в качестве альтернативы вы получите позицию выбранного элемента, если переопределите метод onItemSelected()

2 голосов
/ 25 мая 2010

Вы создаете элементы Spinner через SpinnerAdapter, поэтому вы определяете положение элементов. Если вы создадите элементы Spiner из какой-либо коллекции, вы можете выполнить поиск по идентификатору.

1 голос
/ 25 октября 2012

хорошо, если вы используете это, вы можете получить позицию no элемента, тогда вы можете совпасть с вашим массивом значений

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
system.out.println(arg2);
}

здесь arg2 - индекс позиции выбранных элементов, остальное, надеюсь, вы сможете управлять

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...