Как установить сообщение об ошибке для Spinner в Android?
Я хотел бы иметь возможность вызвать такой код, похожий на то, как setError
установлен в TextView:
spinner.setError("Error message");
Однако setError
работает только для EditText, а не для Spinner.
Я хочу уведомить пользователя, если поле счетчика не выбрано. Как я могу выполнить такое уведомление без использования Toast?
Ответы
Ответ 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/...