Есть 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 если простым языком, это класс между презнтером и моделью, который преобразует данные (+логику работы с ними) из модели в презентер и обратно в необходимом виде
Комментариев нет:
Отправить комментарий