2010-05-25 2 views
4

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

Спасибо,

Александр

ответ

2

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

+0

И что для контент-провайдера в качестве источника данных для моего адаптера? ;) –

4

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

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

+0

Дело в том, что мне нужно УСТАНОВИТЬ выбранный элемент, знающий предмет. Нет такого метода, как setSelectedItem (long id), поэтому мне нужна позиция –

+0

, если вы используете адаптер массива, вы знаете, сколько элементов вы вставляете, в этом случае вы можете установить, вызвав Spinner.setselection (int position) указывает на элемент в Listadapter, начиная с 0. – Vamsi

+0

@ Vamsi И что, если вы используете предварительно определенный массив строк в strings.xml? Технически вы НЕ должны знать, какая запись находится в какой позиции, иначе не было бы смысла определять эти массивы String в strings.xml (и там определенно есть точка) – AgentKnopf

6

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

Spinner mySpn = (Spinner) findViewById(R.id.my_spinner); 
String spnItem = (String) mySpn.getItemAtPosition(mySpn.getSelectedItemPosition()); 
6

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

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) в содержательного способом)

1

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

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

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

Смежные вопросы