Страницы

Поиск по вопросам

понедельник, 10 июня 2019 г.

Как назначить TextWatcher на EditField при MVP

Есть MainActivity, есть Presenter, есть отдельный класс Util который наследуется от TextWatcher. Задача в том, чтобы назначить этот TextWatcher на editField.
Сейчас MainActivity
mainPresenterImpl = new MainPresenterImpl(); mainPresenterImpl.translationInputFieldListener(translatedTextInput);
Presenter
@Override public void translationInputFieldListener(EditText translatedTextInput) { Log.v("TAG", "In presenter"); translatedTextInput.addTextChangedListener(textWatcherUtil = new TextWatcherUtil()); }
Util
public class TextWatcherUtil implements TextWatcher{
@Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override public void afterTextChanged(Editable editable) { }
}
Задача, назначить в методе afterTextChanged. Там уже дальше будет выполнятся метод сохранения значения в SharedPreferences.
P.S. Если мой вопрос составлен не корректно, то если минусуете, пожалуйста отпишите в комментариях, что сделанно не верно, чтобы ошибок не повторялось. Спасибо


Ответ

textWatcher это из категории дата биндинга в сторону MVVM. В случае паттерна MVP TextWatcher'a держите во вьюхе и в его колбеках вызываете презентер. и вся логика уже в презентере. т.е. будет вот так:
public class TextWatcherUtil implements TextWatcher{
@Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { presenter.beforeTextChanged(...); }
@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { presenter.onTextChanged(...); }
@Override public void afterTextChanged(Editable editable) { presenter.afterTextChanged(...); }
Т.е. в вашем конкретном случае, вы в коллбеке afterTextChanged() вызываете presenter.onTextChanged() и в этом методе презентер вызывает свои Private методы работы с префами
А если у вас идет работа с префами, что можно считать репозиторием, то можете прикрутить к MVP еще и Interactor если простым языком, это класс между презнтером и моделью, который преобразует данные (+логику работы с ними) из модели в презентер и обратно в необходимом виде

Комментариев нет:

Отправить комментарий