7

如何显示类似于 TextView.setError() 的微调器小部件的验证错误我不想为每个微调器验证错误打开一个新对话框,android.widget.Spinner 类没有 setError 方法

4

3 回答 3

19

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

于 2015-02-18T11:12:14.313 回答
1

做 Diederik 代码的一种更简洁的方法:

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

于 2016-06-23T04:57:34.180 回答
0

因此,您可以在微调器适配器的 getView 中使用“setError”。当然,如果您的项目的微调器的 xml 有一个 TextView:

if(requeriedField && item.getValue() == 0){
    img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired));
}
于 2014-01-20T13:03:48.930 回答