【问题标题】:Spinner Validation using android saripaar使用 android saripaar 的微调器验证
【发布时间】:2015-02-10 11:53:20
【问题描述】:

如何验证我的Spinner Android Saripaar?

我已通过以下方式声明了我的Spinner

@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 {

    }
}

【问题讨论】:

  • 您是否尝试验证是否选择了微调器
  • 是...是否被选中

标签: android validation spinner saripaar


【解决方案1】:

如果您想要比user3508814 提供的更简单的解决方案,只需执行以下操作(无需跟踪spinnerSelections):

使用的注释

@Select
Spinner spin_country;

验证失败

    @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);
            }
        }
    }

【讨论】:

    【解决方案2】:

    这是我的解决方案。

    使用地图来跟踪微调器及其文本视图(如果您有多个)。

    private Map<View, TextView> spinnerSelections = new HashMap<View, TextView>();
    

    使用 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) {
    
            }
        });
    

    在微调器的文本视图上设置错误

    @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);
            }
        }
    }
    

    我将微调器设置为不可聚焦,因此我看不到任何错误消息,但我得到了红色感叹号。

    希望这有帮助。

    【讨论】:

    • 您使用哪个 saripaar 注释进行验证?
    • @Ltroya 我使用了@Select 注释。
    【解决方案3】:

    在您的具体情况下,如果在您的 Spinner 中选择了第一项(索引 0),Saripaar 的 Spinner 验证将失败。

    考虑到这些是您Spinner 上的项目。

    -- Country --
    Albania
    France
    India
    Sri Lanka
    ...
    

    如果选择-- Country --,验证将失败,因为它是Spinner 上的第一项(索引0)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 2013-04-13
      相关资源
      最近更新 更多