2013-08-29 13 views
6

Mam 5 addTextChangedListener dla 5 tekstu edycji. Chcę je dostosować w jednej funkcji, tak, że muszę po prostu przekazać identyfikator editttext i addTextChangedListener uzyskać zastosowanie w tym. Jak mogłem zrobić to nie rozumiem tego. Proszę mi pomóc w tej sprawie.Zestaw addTextChangedListener w funkcji Android

Kod

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); 
      } 
     }); 

Wszystko addTextChangedListener robią to samo dla różnych id .Tak jest to możliwe w android, aby dostosować go jako funkcji i musimy po prostu przekazać identyfikator na tym i addTextChangedListener zostaną zastosowane na tym, że

As sugerują

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 

    } 

} 

Odpowiedz

10

Powinieneś utworzyć klasę Listener, taką jak ta, po prostu zmodyfikuj parametry w konstruktorze , aby zaakceptować identyfikator EditText ID, do którego chcesz dodać słuchacza.

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 
     } 
    } 
} 

je nazwać jak to w swojej działalności

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

Ponownie zmodyfikować parametry, ile potrzeba.

+0

ja nie dostać, jak będę nazywają to z mojej działalności – Developer

+0

zaktualizowanej mój kod teraz jak ja nazywają to z mojej klasy i działalności jaki jest pożytek z adaptera – Developer

+0

@Gaurav, przepraszam, zaktualizowałem moją odpowiedź i usunąłem adapter. To było dla mojego własnego kodu. Nazwiesz to tak, więc: 'mobileNumber2 = (EditText) findViewById (R.id.text) i mobileNumber2.addTextChangedListener (new addListenerOnTextChange (this, mobileNumber2);' – linus

1

Jeśli wszystkie pięć zachowuje się w ten sam sposób, możesz utworzyć obiekt TextWatchera i przekazać go wszystkim.

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

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

Zmienna viewOnFocus jest ustawiony poprzez onFocusChange słuchacza

OnFocusChangeListener of = new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      viewInFocus = view; 
     } 
    } 
}; 
mobile1.setOnFocusChangeListener(of); 
mobile2.setOnFocusChangeListener(of); 
mobile3.setOnFocusChangeListener(of); 
Powiązane problemy