2016-10-27 2 views
0

ライブラリSaripaarを使用してTextInputLayoutのエラーを設定する方法を苦労しています。私は、検証されるべき特定の入力に対してTextWatcherを追加しました。私もアダプターを登録Androidインスタント検証Saripaar + TextInputLayout

validator.registerAdapter(TextInputLayout.class, 
      new ViewDataAdapter<TextInputLayout, String>() { 
       @Override 
       public String getData(TextInputLayout flet) throws ConversionException { 
        return flet.getEditText().getText().toString(); 
       } 
      } 
    ); 

しかし、私はレイアウトのエラーを設定する方法がわかりません。答え

+0

メールでこれについて説明しました。同じ問題に遭遇する可能性のある人のためにあなたのスニペットをここに共有することができればうれしいです。 –

答えて

1

ため

@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 { 
      Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

おかげで私は自分のコードを変更し、それがその後、私は2を上書きし、私はテキスト入力レイアウトにバインドビューを変更するすべての

@Order(1) 
@NotEmpty(messageResId = R.string.error_required_field) 
@Email(messageResId = R.string.error_invalid_email) 
@BindView(R.id.input_layout_email) TextInputLayout inputLayoutEmail; 

最初に取り組んでいますライブラリのメソッド

@Override 
public void onValidationSucceeded() { 
    loginButton.setAlpha(1); 
    loginButton.setEnabled(true); 
    MyTextWatcherUtils.clearAllInputs(inputLayoutList); 
} 

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

     if (view instanceof TextInputLayout) { 
      ((TextInputLayout) view).setError(message); 
     } 
    } 
} 

毎回レイアウトがクリアである必要があります。