如何显示类似于TextView.setError()的微调器窗口小部件的验证错误

时间:2013-09-30 18:38:17

标签: android validation spinner

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

3 个答案:

答案 0 :(得分:19)

如果您的微调器设置了默认项目视图,Spinner类上的getSelectedView()方法将返回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 with error

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

一种更简洁的方式来做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