2014-04-04 12 views
10

Mam program obsługi, który jest TextWatcher i nie wiem, jak uzyskać View, który zmienił tekst.Jak uzyskać widok w kontekście metody TextWatcher?

Oto moja obsługi:

TextWatcher handler = new TextWatcher() { 

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

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     oldText = s.toString(); 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     //v.setText("afterTextChanged"); 
    } 
}; 

Zanotuj skomentował część, to jest to, co chcę, aby uzyskać View od EditText, który wywołał zdarzenie, aby zmienić tekst po tekście została zmieniona.

Jak mogę osiągnąć ten .setText() metodę wewnątrz zdarzenia afterTextChanged? (Podobnie jak zdarzenia onClick, że widok jest v)

+2

klasy TW realizuje TextWatcher {public TW (Zobacz v) {... – pskink

+0

naprawdę nie mogę zrozumieć. Ale mam "pomysł", czy możesz opublikować odpowiedź zawierającą przykładową klasę, którą mogę zaimplementować zawierający 'Widok v'? –

Odpowiedz

15
public static class MyTextWatcher implements TextWatcher { 

    private EditText mEditText; 

    public MyTextWatcher(EditText editText) { 
     mEditText = editText; 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     oldText = mEditText.toString(); 
    } 
    .... 
} 

Dodaj go:

mFirstEditText.addTextChangedListener(new MyTextWatcher(mFirstEditText)); 
+1

'TextFormatter' should'nt być' MyTextWatcher'? –

+0

To działało! Ale musiałem zmienić 'TextFormatter' na' MyTextWatcher', aby go skompilować. –

+0

Rzeczywiście, zmieniłem to. –

Powiązane problemy