使用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
批注。