Я хотел бы иметь возможность вызвать такой код, похожий на то, как setError
установлен в TextView:
spinner.setError("Error message");
Однако setError
работает только для EditText, а не для Spinner.
Я хочу уведомить пользователя, если поле счетчика не выбрано. Как я могу выполнить такое уведомление без использования Toast ?
В этом потоке есть несколько решений. Создание 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);
Класс Spinner вернет текстовое представление, когда вы используете getSelectedView()
. Таким образом, вы можете использовать setError()
косвенно.
((TextView)spinner.getSelectedView()).setError("");
Результаты должны быть как …
Надеюсь, это будет полезно!
Вот решение, которое использует скрытый TextView для отображения всплывающего сообщения в дополнение к значку ошибки в счетчике. Когда в состоянии ошибки, Spinner выглядит так:
Если не в состоянии ошибки, это выглядит так.
Полное описание документа описано здесь: https://stackoverflow.com/a/29956372/3063884