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

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

Solutions Collecting From Web of "Как отобразить ошибку проверки для виджета spinner, аналогичного TextView.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 если вы хотите ее отклонить.