При реализации addTextChangedListenerдля двух полей EditTextвам может потребоваться различать их в прослушивателе, чтобы выполнять разные действия или обрабатывать события индивидуально. Вот несколько способов добиться этого:
- Используйте отдельные объекты-прослушиватели: создайте два отдельных объекта
TextWatcherи назначьте каждый из них соответствующему полюEditText. Внутри каждого метода прослушивателя (beforeTextChanged,onTextChanged,afterTextChanged) вы можете выполнять определенную логику на основе связанногоEditText. поле.
Пример:
EditText editText1 = findViewById(R.id.editText1);
EditText editText2 = findViewById(R.id.editText2);
TextWatcher watcher1 = new TextWatcher() {
// Override methods and implement logic for editText1
};
TextWatcher watcher2 = new TextWatcher() {
// Override methods and implement logic for editText2
};
editText1.addTextChangedListener(watcher1);
editText2.addTextChangedListener(watcher2);
- Используйте один прослушиватель с условными проверками. Если вы предпочитаете использовать один объект
TextWatcher, вы можете различать два поляEditText, проверяя их идентификаторы или ссылки внутри методы слушателя.
Пример:
EditText editText1 = findViewById(R.id.editText1);
EditText editText2 = findViewById(R.id.editText2);
TextWatcher watcher = new TextWatcher() {
// Override methods and implement logic
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (editText1.isFocused()) {
// Logic for editText1
} else if (editText2.isFocused()) {
// Logic for editText2
}
}
};
editText1.addTextChangedListener(watcher);
editText2.addTextChangedListener(watcher);
- Использовать теги: установите уникальные теги для каждого поля
EditTextи получайте их в прослушивателе. Тегами может быть любой объект, например строка или целое число, которое можно использовать для различения полей.
Пример:
EditText editText1 = findViewById(R.id.editText1);
EditText editText2 = findViewById(R.id.editText2);
TextWatcher watcher = new TextWatcher() {
// Override methods and implement logic
public void onTextChanged(CharSequence s, int start, int before, int count) {
Object tag = ((EditText) s).getTag();
if (tag.equals("editText1")) {
// Logic for editText1
} else if (tag.equals("editText2")) {
// Logic for editText2
}
}
};
editText1.setTag("editText1");
editText2.setTag("editText2");
editText1.addTextChangedListener(watcher);
editText2.addTextChangedListener(watcher);