Устанавливание значений и текста дисплея в Счетчике Android

Я нуждаюсь в помощи в установке значения и текста дисплея в счетчике. согласно теперь я заполняю свой счетчик адаптером массива, например,

mySpinner.setAdapter(myAdapter);

и насколько я знаю после выполнения этого, текст дисплея и значение счетчика в том же положении - то же. Другой атрибут, который я могу получить от счетчика, является позицией по объекту.

теперь в моем случае я хочу сделать счетчик как выпадающее поле, которое мы имеем в.NET.

который содержит текст и значение.

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

Например:

Текстовое значение
CAT 10
Гора 5
Камень 9
Рыба 14
Река 13
Поясница 17

таким образом от вышеупомянутого массива я только отображаю неживой текст объектов, и что я хочу, то, что, когда пользователь выбирают их, я получаю там значение т.е. как то, когда Гора выбрала, я добираюсь 5

Я надеюсь, что этот пример сделал мой вопрос немного более ясным...

thankx

17
задан Richard Le Mesurier 25 November 2015 в 06:41
поделиться

2 ответа

Шаг №1: Создайте модель данных для пары текста и значения

Шаг №2: Расширьте BaseAdapter или ArrayAdapter , чтобы обернуть вашу модель данных, переопределив ] getView () , чтобы вернуть то, что вы хотите отобразить в самом Spinner

Шаг № 3: В событии выбора используйте позицию, чтобы найти соответствующий объект в вашей модели данных, и найдите значение

. Если все, что вы хотите отобразить в счетчике , - это просто текстовое представление каждого элемента в модели данных, вы можете пропустить пользовательский адаптер - просто используйте ArrayAdapter и переопределите toString () в YourModelClass , чтобы вернуть любой отображаемый текст, который вы хотите.

12
ответ дан 30 November 2019 в 12:57
поделиться

Если вы не хотите создавать свой собственный класс адаптера, вы можете вместо этого обернуть ваши данные во что-то, у чего 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();
}
15
ответ дан 30 November 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: