2016-10-19 8 views
0

EditTextsの束を持つサインアップ画面があり、それぞれにTextWatcherがありますので、変更を聞き取り、エラーを表示または隠すことができます。例えばTextWatchersの重複コードを置き換えます

etFirstName.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      if (etFirstName.getText().length() > 0) { 
       hideFirstNameError(); 
      } 
     } 
    }); 

問題は、コードがすべてこのコードは私のeditTextsのそれぞれのために何度も何度も繰り返されているとあまりにも肥大化していることです。

だから私はそこにきれいに書く方法があるのか​​疑問に思っていたのですか? TextWatcherを拡張するカスタムクラスに置き換えようとしましたが、コンストラクタに変数として渡す必要があります。EditTextとこれが良い習慣であるかどうかはわかりません:あなたのActivities以外のクラスに渡すアンドロイド?

public class CustomTextWatcher implements TextWatcher { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     //empty 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     //empty 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     //empty 
    } 
} 

、代わり new TextWatcher()の渡し:

+0

ここで何をしていますか?hideFirstNameError();? –

+0

@GaneshPokale 'tilFirstname.setError(null);tilFirstname.setErrorEnabled(false); 'editTextフィールドの対応する' TextInputLayout'からエラーを隠しています。 – Mes

+0

どのコードが繰り返されますか? –

答えて

0

は、カスタムクラスを作成します。

関連する問題