Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Spinner не устанавливать значение пока не нажму(android)

#java #android #android_spinner


У меня есть spinner:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView parent, View view, int childposition,
long id) {
        textView.setText(spinner.getSelectedItem().toString());
    }

    @Override
    public void onNothingSelected(AdapterView parent) {
        textView.setText("");
    }
    });


У меня есть textView При запуске программы, по стандарту туда устанавливается первое
значение списка, т.е:

list.add("one");
list.add("two");


Когда я запущу свой пример то у меня в textView будет one. 

Вопрос: как сделать так что б при запуске программы у меня был textView.setText("")
 и только тогда когда я нажму на спиннер и выберу item то устанавливалось textView.setText(spinner.getSelectedItem().toString()); ?
    


Ответы

Ответ 1



То что вы описали - нормальное поведение дефолтного Spinner. Это многим не нравится, поэтому появилось альтернативное решение https://github.com/justjohn/transitwidget/blob/master/src/com/transitwidget/NoDefaultSpinner.java. Добавьте этот класс в свой проект и используйте вместо стандартного Spinner - NoDefaultSpinner. У вас не будет выбираться первое значение по умолчанию, а в самом Spinner будет устанавливаться текст из атрибута prompt.

Ответ 2



Есть более изящней способ вместо того что бы тянуть в проект левые исходники :-) Все что нужно это назначить OnItemSelectedListener в методе post() Выглядит это так: spinner.setAdapter(adapter); spinner.post(new Runnable() { @Override public void run() { spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { textView.setText(spinner.getSelectedItem().toString()); } @Override public void onNothingSelected(AdapterView parent) { textView.setText(""); } }); } });

Комментариев нет:

Отправить комментарий