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:

Spinner with error

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.

Share:
18,295
user2708445
Author by

user2708445

Updated on June 11, 2022

Comments

  • user2708445
    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
    vikifor over 8 years
    How to set spinner default value, because every time I call spinner.getSelectedView() I got null , because nothing is selected on my spinner.