Один TextWatcher для нескольких EditTexts?
У меня есть несколько (12) EditTexts в моей деятельности в парах 2. Я хочу сделать действие для каждой пары, когда текст в них изменяется. Нужно ли мне иметь 6 разных TextWatchers или есть способ использовать один и тот же или для какого-то переключения?
2 ответа
Решение
Вы можете прикрепить одни и те же часы TextWatcher к каждому EditText. В зависимости от того, что вам нужно сделать, вам может потребоваться создать реализацию TextWatcher с некоторым контекстом.
Я нуждался в этом, поэтому я сделал многоразовый... я расширил класс textwatcher, чтобы я мог передать представление, которое я хочу смотреть.
/**
*
* A TextWatcher which can be reused
*
*/
public class ReusableTextWatcher implements TextWatcher {
private TextView view;
// view represents the view you want to watch. Should inherit from
// TextView
private GenericTextWatcher(View view) {
if (view instanceof TextView)
this.view = (TextView) view;
else
throw new ClassCastException(
"view must be an instance Of TextView");
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i,
int before, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int before,
int count) {
int id = view.getId();
if (id == R.id.someview){
//do the stuff you need to do for this particular view
}
if (id == R.id.someotherview){
//do the stuff you need to do for this other particular view
}
}
@Override
public void afterTextChanged(Editable editable) {
}
}
затем, чтобы использовать его, я делаю что-то вроде этого, чтобы зарегистрировать его:
myEditText.addTextChangedListener(new ReusableTextWatcher(myEditText));