2016-10-25 13 views
0

私はこれらのためにモバイル、パスワード、電子メールという3つのEdittextを持っています。それらのために別々のTextwatcherを実装しましたが、複数のEdittextに対して1つのTextwatcherを作成したいと思います。複数のEditextでTextwatcherを作成するには?

コード: -

private final TextWatcher m_EmailWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

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


    @Override 
    public void afterTextChanged(Editable s) { 
    /*check whether SoftKeyPad open or hide*/ 
     m_MainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       int heightDiff = m_MainLayout.getRootView().getHeight() - m_MainLayout.getHeight(); 
       //noinspection StatementWithEmptyBody 
       if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... 

       } else {/*if hide then clear focus from Password Edit text*/ 
        m_EmailEditText.clearFocus(); 
        m_Email = m_EmailEditText.getText().toString().trim(); 
        if (isValidEmail(m_Email) && m_Email.split("@")[0].length() <= 64 && (m_Email.split("@")[1].length() >= 2 && m_Email.split("@")[1].length() <= 255)) { 

        } else { 
         m_EmailEditText.setError("Please enter valid Email Id"); 
        } 

       } 
      } 
     }); 

    } 
}; 
private final TextWatcher m_PassWordWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

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

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}; 
private final TextWatcher m_MobileWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

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

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}; 

答えて

1

TextWatcherに延びる別個Classを作成します。

public class CustomTextWatcher implements TextWatcher { 

    private EditText editText; 
    private Context context; 
    private int value; 

    public CustomTextWatcher(Context context, EditText et, int val){ 
     this.context = context; 
     this.editText = et; 
     this.value = val; 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if(s.toString().length() > 0){ 
      if(value == 0){ 
       //Email 
      } 
      else if(value == 1){ 
       //Mobile Number 
      } 
      else if(value == 2){ 
       //Password 
      } 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
} 

あなたはEditTextTextWatcherを適用したいときはこのようにそれを行います。

+0

コードでこのクラスを追加する方法 – Raghav

+0

更新された回答を参照してください。 – vidulaJ

+0

しかし、私は複数のクラス – Raghav

関連する問題