2013-08-29 27 views
6

我有5个addTextChangedListener用于5个编辑文本。我想在一个函数中自定义它们,这样我就只需传递editttext的id,然后addTextChangedListener就可以应用了。我该怎么办这我没有得到这个。请帮助我。在函数中设置addTextChangedListener Android

代码

mobileNumber.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       mobileNumber.setError(null); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       mobileNumber.setError(null); 
      } 
     }); 

     mobileNumber2.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       mobileNumber2.setError(null); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       mobileNumber2.setError(null); 
      } 
     }); 

     mobileNumber1.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       mobileNumber1.setError(null); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       mobileNumber1.setError(null); 
      } 
     }); 

所有addTextChangedListener正在为不同的ID同样的事情。所以这是可能在android系统定制它的功能,我们必须只是传递上并addTextChangedListener的ID将上

作为应用建议

public class BookingClassAddListenerOnTextChange implements TextWatcher { 
    private Context mContext; 
    EditText mEdittextview; 

    public BookingClassAddListenerOnTextChange(Context context, EditText edittextview) { 
     super(); 
     this.mContext = context; 
     this.mEdittextview= edittextview; 

    } 
    @Override 
    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
      int arg3) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     // TODO Auto-generated method stub 

    } 
    public void addTextChangedListener(
      BookingClassAddListenerOnTextChange bookingClassAddListenerOnTextChange) { 
     // TODO Auto-generated method stub 

    } 

} 

回答

10

您应该像这样创建一个Listener类,只需修改构造函数 中的参数即可接受要添加侦听器的EditText ID。

public class addListenerOnTextChange implements TextWatcher { 
    private Context mContext; 
    EditTextView mEdittextview; 

    public addListenerOnTextChange(Context context, EditTextView edittextview) { 
     super(); 
     this.mContext = context; 
     this.mEdittextview= edittextview; 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
    } 

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

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     //What you want to do 
     } 
    } 
} 

你在你的活动叫他们这样需要

mobileNumber2.addTextChangedListener(new addListenerOnTextChange(this, mobileNumber2)); 

再次修改参数。

+0

设置我没有得到我怎么会从我的更新现在我怎么会从我的活动类调用这个和我的代码活动 – Developer

+0

调用此什么是适配器 – Developer

+0

@Gaurav,对不起,更新我的答案并删除了适配器。那是为了我自己的代码。您将像这样调用它,'mobileNumber2 =(EditText)findViewById(R.id.text)和mobileNumber2.addTextChangedListener(new addListenerOnTextChange(this,mobileNumber2);' – linus

1

如果所有五个行为以相同的方式,那么你可以创建一个TextWatcher对象并将其传递给所有对象。

TextWatcher tw = new TextWatcher() { 
    /* code goes here */ 
    /* viewOnFocus can be used here */ 
} 

mobilenum1.addTextChangedListener(tw); 
mobilenum2.addTextChangedListener(tw); 
mobilenum3.addTextChangedListener(tw); 

viewOnFocus变量通过一个onFocusChange听众

​​