Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用android SariPar进行微调器验证_Android_Validation_Spinner_Saripaar - Fatal编程技术网

使用android SariPar进行微调器验证

使用android SariPar进行微调器验证,android,validation,spinner,saripaar,Android,Validation,Spinner,Saripaar,如何验证我的微调器Android SariPar 我已按以下方式声明了我的微调器 @Select(order = 8) Spinner spin_country; 这是我的onValidationFailed()方法 @Override public void onValidationFailed(View failedView, Rule<?> failedRule) { // TODO Auto-generated method stub String mes

如何验证我的
微调器
Android SariPar

我已按以下方式声明了我的
微调器

@Select(order = 8)
Spinner spin_country;
这是我的
onValidationFailed()
方法

@Override
public void onValidationFailed(View failedView, Rule<?> failedRule) {
    // TODO Auto-generated method stub

    String message = failedRule.getFailureMessage();
    if (failedView instanceof Spinner) {
        failedView.requestFocus();
        // What should i do here??
    } else {

    }
}
@覆盖
public void onValidationFailed(视图失败视图、规则失败规则){
//TODO自动生成的方法存根
字符串消息=failedRule.getFailureMessage();
if(旋转器的失败视图实例){
failedView.requestFocus();
//我在这里该怎么办??
}否则{
}
}

在您的特定情况下,如果在
微调器
中选择了第一项(索引0),saripar
微调器验证将失败

-- Country --
Albania
France
India
Sri Lanka
...
考虑到这些是
微调器上的项目

-- Country --
Albania
France
India
Sri Lanka
...
如果选择了
--国家--
,验证将失败,因为它是
微调器上的第一项(索引0)

这是我的解决方案

-- Country --
Albania
France
India
Sri Lanka
...
使用贴图跟踪微调器及其文本视图(如果有多个)

private Map spinnerSelections=new HashMap();
使用OnItemSelectedListener记录对微调器选择的更改。这将在活动加载时激发,因此将跟踪您的默认选择

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            spinnerSelections.put(parent, (TextView) view);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
spinnerSelections.put(父级,(文本视图)视图);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
在微调器的文本视图上设置错误

@Override
public void onValidationFailed(List<ValidationError> errors) {
    for (ValidationError error : errors) {
        View view = error.getView();
        String message = error.getCollatedErrorMessage(this);

        if (view instanceof EditText) {
            ((EditText) view).setError(message);
        }
        else if (view instanceof Spinner) {
            spinnerSelections.get(view).setError(message);
        }
    }
}
@覆盖
public void onValidationFailed(列表错误){
对于(ValidationError错误:错误){
视图=错误。getView();
字符串消息=错误。GetCollaterRorMessage(此);
如果(查看EditText的实例){
((编辑文本)视图).setError(消息);
}
else if(查看微调器的实例){
喷丝头选择。获取(视图)。设置错误(消息);
}
}
}
我将微调器设置为不可聚焦,因此我看不到任何错误消息,但我确实得到了红色感叹号


希望这对您有所帮助。

如果您想要一个比
用户3508814提供的解决方案更简单的解决方案,只需执行以下操作(无需跟踪
喷丝头选择
):

使用的注释

@Select
Spinner spin_country;
OnValidation失败

    @Override
    public void onValidationFailed(List<ValidationError> errors) {
        for (ValidationError error : errors) {
            View view = error.getView();
            String message = error.getCollatedErrorMessage(this);

            // Display error messages
            if (view instanceof EditText) {
                ((EditText) view).setError(message);
            }
            else if (view instanceof Spinner) {
                ((TextView) ((Spinner) view).getSelectedView()).setError(message);
            }
        }
    }
@覆盖
public void onValidationFailed(列表错误){
对于(ValidationError错误:错误){
视图=错误。getView();
字符串消息=错误。GetCollaterRorMessage(此);
//显示错误消息
如果(查看EditText的实例){
((编辑文本)视图).setError(消息);
}
else if(查看微调器的实例){
((TextView)((微调器)视图).getSelectedView()).setError(消息);
}
}
}

是否尝试验证是否选择了微调器是…是否选择了微调器您使用了哪个SariPar批注进行验证?@LTroya我使用了
@Select
批注。