Как заставить EditText наблюдать LiveData ViewModel и перенаправлять пользовательский ввод в ViewModel без использования привязки данных - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь найти способ, чтобы EditText обновлял данные ViewModel и одновременно наблюдал эти данные за любыми изменениями (например, изменениями, вызванными манипулированием БД).Есть ли способ сделать это без использования библиотеки привязки данных?

Основная проблема, с которой я сталкиваюсь при простом использовании MutableLiveData, заключается в следующем:

, когда пользователь вводит текст в EditText,TextWatcher запускает ViewModel для обновления своих данных, что, в свою очередь, устанавливает новый текст в объект MutableLiveData.Поскольку EditText наблюдает за LiveData, onChange запускается и соответствующим образом устанавливает текст EditText, что, в свою очередь, снова вызывает TextWatcher, создавая бесконечный цикл.

1 Ответ

0 голосов
/ 06 мая 2019

Я также столкнулся с этой проблемой, так как мне не нравится библиотека привязки данных.Я сделал, как сказал @kAliert, но в моем ViewModel чтобы сохранить логику там.Я просто добавил простую зацепку функции, которая получает мой текст, изменяет события в ViewModel.Хорошо работает.

fun editTextChanged(newText: String) {
    if (newText == textLiveData.value) {
        return
    }
}
...