Я нуждаюсь в помощи в установке значения и текста дисплея в счетчике. согласно теперь я заполняю свой счетчик адаптером массива, например,
mySpinner.setAdapter(myAdapter);
и насколько я знаю после выполнения этого, текст дисплея и значение счетчика в том же положении - то же. Другой атрибут, который я могу получить от счетчика, является позицией по объекту.
теперь в моем случае я хочу сделать счетчик как выпадающее поле, которое мы имеем в.NET.
который содержит текст и значение.
где, поскольку текст отображен, и значение в бэкэнде. таким образом, если я изменяю выпадающее поле, я могу или использовать его выделенный текст или значение. но не случай в случае счетчика андроида.
Например:
Текстовое значение
CAT 10
Гора 5
Камень 9
Рыба 14
Река 13
Поясница 17
таким образом от вышеупомянутого массива я только отображаю неживой текст объектов, и что я хочу, то, что, когда пользователь выбирают их, я получаю там значение т.е. как то, когда Гора выбрала, я добираюсь 5
Я надеюсь, что этот пример сделал мой вопрос немного более ясным...
thankx
Шаг №1: Создайте модель данных для пары текста и значения
Шаг №2: Расширьте BaseAdapter
или ArrayAdapter
, чтобы обернуть вашу модель данных, переопределив ] getView ()
, чтобы вернуть то, что вы хотите отобразить в самом Spinner
Шаг № 3: В событии выбора используйте позицию, чтобы найти соответствующий объект в вашей модели данных, и найдите значение
. Если все, что вы хотите отобразить в счетчике
, - это просто текстовое представление каждого элемента в модели данных, вы можете пропустить пользовательский адаптер
- просто используйте ArrayAdapter
и переопределите toString ()
в YourModelClass
, чтобы вернуть любой отображаемый текст, который вы хотите.
Если вы не хотите создавать свой собственный класс адаптера, вы можете вместо этого обернуть ваши данные во что-то, у чего toString будет возвращать то, что вы хотите показать в счетчике. Я использую такой класс:
public class TextItemPair<T> {
private String text;
private T item;
public TextItemPair(String text, T item) {
this.text = text;
this.item = item;
}
public String getText() {
return text;
}
public T getItem() {
return item;
}
@Override
public String toString() {
return getText();
}
}
И когда счетчик меняется:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
YourTypeHere t = ((TextItemPair<YourTypeHere>)spinner.getItemAtPosition(position)).getItem();
}