How to display validation error for a spinner widget similar to TextView.setError()
18,295
Solution 1
If your spinner is set-up with default item views the getSelectedView()
method on Spinner class will return a TextView
. And on that you can call setError(CharSequence)
Here is what I did:
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);
}
}
Result looks like this on Android 4.4:
Solution 2
A somewhat cleaner way of doing Diederik's code:
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);
}
}
Just set error
to null
if you want to dismiss it.
Author by
user2708445
Updated on June 11, 2022Comments
-
user2708445 about 2 years
How to display validation error for a spinner widget similar to TextView.setError() I don't want to open a new dialog box for every spinner validation error, android.widget.Spinner class doesn’t have setError method
-
vikifor over 8 yearsHow to set spinner default value, because every time I call spinner.getSelectedView() I got null , because nothing is selected on my spinner.