Как отобразить ошибку проверки для виджета spinner, аналогичного TextView.setError ()

Как отобразить ошибку проверки для виджета spinner, аналогичного TextView.setError () Я не хочу открывать новое диалоговое окно для каждой проверки проверки spinner, класс android.widget.Spinner не имеет метода setError

Если ваш счетчик настроен по умолчанию, метод getSelectedView() в классе Spinner вернет TextView . И на этом вы можете вызвать setError(CharSequence) Вот что я сделал:

 View selectedView = spinner.getSelectedView(); if (selectedView != null && selectedView instanceof TextView) { TextView selectedTextView = (TextView) selectedView; if (!valid) { String errorString = selectedTextView.getResources().getString(mErrorStringResource); selectedTextView.setError(errorString); } else { selectedTextView.setError(null); } } 

Результат выглядит так на Android 4.4:

Spinner с ошибкой

Таким образом, вы можете использовать 'setError' в вашем getView в адаптере spinner. Конечно, если xml вашего элемента вашего счетчика имеет TextView:

 if(requeriedField && item.getValue() == 0){ img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired)); } 

Несколько более чистый способ сделать код Дидерика:

 static public void setSpinnerError(Spinner spinner, String error){ View selectedView = spinner.getSelectedView(); if (selectedView != null && selectedView instanceof TextView) { TextView selectedTextView = (TextView) selectedView; selectedTextView.setError(error); } } 

Просто установите error в значение null если вы хотите ее отклонить.