简体   繁体   English

如何在android中的多个Edittext中添加单个TextWatcher?

[英]How to add single TextWatcher in multiple Edittext in android?

I have two edit text namely mobile number and password in which I am adding TextWatcher and But I want single TextWatcher in multiple edit text .How do I do that 我有两个编辑文本,即手机号码和密码,我在其中添加TextWatcher但我想在多个编辑文本中使用单个TextWatcher。我该怎么做

TextWatcher mMobileWatcher = 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) {
        checkFieldsForEmpty();
    }

    @Override
    public void afterTextChanged(Editable s) {
        isValidMobile();
    }
};
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) {
        checkFieldsForEmpty();
    }

    @Override
    public void afterTextChanged(Editable s) {

        m_EmailId = m_Inputemail.getText().toString().trim();
        if (!isValidEmail(m_EmailId)) {
            m_Inputemail.setError("Please enter valid Email Id");
        }
    }
};
m_InputMobile = (EditText) findViewById(R.id.input_mobile);
    m_InputMobile.addTextChangedListener(mMobileWatcher);
m_Inputemail = (EditText) findViewById(R.id.input_emailId);
    m_Inputemail.addTextChangedListener(m_EmailWatcher);

Try this way to do that 试试这种方式

private class CustomTextWatcher implements TextWatcher{

    private View view;
    private CustomTextWatcher (View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

    public void afterTextChanged(Editable editable) {
        String text = editable.toString();
        switch(view.getId()){
            case R.id.edtname:
                model.setName(text);
                break;
            case R.id.edtemail:
                model.setEmail(text);
                break;
            case R.id.edtphone:
                model.setPhone(text);
                break;
        }
    }
}

to use in oncreate 在oncreate中使用

edtname = (EditText) findViewById(R.id.edtname);
edtname.setText(model.getName());
edtname.addTextChangedListener(new CustomTextWatcher (edtname));

edtemail = (EditText) findViewById(R.id.edtemail);
edtemail .setText(model.getEmail());
edtemail .addTextChangedListener(new CustomTextWatcher (edtemail));

edtphone = (EditText) findViewById(R.id.edtphone);
edtphone .setText(model.getPhone());
edtphone .addTextChangedListener(new CustomTextWatcher (edtphone ));

You can do it like this : 你可以这样做:

    private final TextWatcher mTextWatcher = new TextWatcher() {

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

    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void afterTextChanged(Editable s) {

        if (s == [youredittext].getEditableText()) {

            }
        if (s == [youranotheredittext].getEditableText()) {

        }
    }
};

And in onCreate() 并在onCreate()

    [youredittext].addTextChangedListener(mTextWatcher);
    [youranotheredittext].addTextChangedListener(mTextWatcher);

Oncreate 在OnCreate

   et1=(EditText)findViewById(R.id.et1);
   et2=(EditText)findViewById(R.id.et2);
   et3=(EditText)findViewById(R.id.et3);
   et4=(EditText)findViewById(R.id.et4);
  et1.addTextChangedListener(new MyTextWatcher(et1));
  et2.addTextChangedListener(new MyTextWatcher(et1));
  et3.addTextChangedListener(new MyTextWatcher(et1));
  et4.addTextChangedListener(new MyTextWatcher(et1));

MyTextWatcher take in your class MyTextWatcher接收你的课程

 private class MyTextWatcher implements TextWatcher {

    private View view;

    private MyTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

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

    public void afterTextChanged(Editable editable) {
        switch (view.getId()) {
        case R.id.et1: // et1 is id of edittext et1;

        // put You Code


            break;
        case R.id.et2:


            break;

              case R.id.et3:


            break;

              case R.id.et4:


            break;
        }
    }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM