Подтвердить что ты не робот

Как установить сообщение об ошибке для Spinner в Android?

Я хотел бы иметь возможность вызвать такой код, похожий на то, как setError установлен в TextView:

spinner.setError("Error message");

Однако setError работает только для EditText, а не для Spinner.

Я хочу уведомить пользователя, если поле счетчика не выбрано. Как я могу выполнить такое уведомление без использования Toast?

4b9b3361

Ответ 1

В этом потоке есть несколько решений Создание setError() для Spinner:

EdmundYeung99 работает для меня, либо вы используете свой собственный адаптер, либо нет. Просто введите следующий код в свою функцию проверки:

TextView errorText = (TextView)mySpinner.getSelectedView();
errorText.setError("");
errorText.setTextColor(Color.RED);//just to highlight that this is an error
errorText.setText("my actual error text");//changes the selected item text to this

Но убедитесь, что у вас есть хотя бы одно значение в адаптере Spinner, когда вы выполняете проверку. Если нет, как пустой адаптер, ожидающий заполнения, сделайте ваш адаптер для получения пустой строки:

ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);

Ответ 2

Класс Spinner вернет текстовое представление при использовании getSelectedView(). Таким образом, косвенно можно использовать setError().

((TextView)spinner.getSelectedView()).setError("Error message");

Результаты должны быть как...

setError in spinner

Надеюсь, это будет полезно!

Ответ 3

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

Spinner in invalid state

Если не в состоянии ошибки, это выглядит так.

Spinner in valid state

Полное решение описано здесь: fooobar.com/info/131952/...