如何验证我的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 {
}
}
答案 0 :(得分:4)
如果您想要一个比user3508814
提供的更简单的解决方案,请执行以下操作(无需跟踪spinnerSelections
):
使用的注释
@Select
Spinner spin_country;
onValidationFailed
@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);
}
}
}
答案 1 :(得分:1)
这是我的解决方案。
使用地图跟踪微调器及其文本视图(如果您有多个)。
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);
}
}
}
我将我的微调器设置为不可聚焦,所以我没有看到任何错误信息,但我确实得到了红色感叹号。
希望这有用。
答案 2 :(得分:0)
在您的特定情况下,如果在Spinner
中选择了第一项(索引0),则Spinner
验证将会失败。
考虑这些是Spinner
上的项目。
-- Country --
Albania
France
India
Sri Lanka
...
如果选择-- Country --
,验证将失败,因为它是Spinner
上的第一个项目(索引0)。