2013-08-29 13 views
6

Ho 5 addTextChangedListener per 5 testo di modifica. Voglio personalizzarli in una singola funzione in modo che devo solo passare l'id di editttext e addTextChangedListener ottenere applicato su che.Come posso fare questo non lo sto facendo. Per favore aiutatemi su questo.Imposta addTextChangedListener in una funzione Android

Codice

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

Tutti addTextChangedListener stanno facendo la stessa cosa per il diverso id .Quindi è possibile questo in Android di personalizzare come una funzione e dobbiamo passare solo l'id su questo e addTextChangedListener sarà applicato su quel

Come suggerire

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 

    } 

} 

risposta

10

Dovresti creare una classe Listener in questo modo, modifica i parametri nel costruttore per accettare l'ID di EditText a cui vuoi aggiungere un listener.

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

li chiami come questo nella vostra attività

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

Anche in questo caso modificare i parametri in base alle esigenze.

+0

non ho avuto come Chiamerò questo da mia attività – Developer

+0

aggiornato il mio codice ora come farò chiamare questo dalla mia classe di attività e qual è l'uso dell'adattatore – Developer

+0

@Gaurav, mi dispiace, aggiornato la mia risposta e rimosso l'adattatore. Era per il mio codice. Lo chiamerai così, 'mobileNumber2 = (EditText) findViewById (R.id.text) e mobileNumber2.addTextChangedListener (new addListenerOnTextChange (this, mobileNumber2);' – linus

1

Se tutti e cinque si comportano nello stesso modo, è possibile creare un oggetto di TextWatcher e passare lo stesso a tutti.

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

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

La variabile viewOnFocus è impostato tramite un onFocusChange ascoltatore

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); 
Problemi correlati