gpt4 book ai didi

android - 如何在不使用数据绑定(bind)的情况下让 EditText 观察 ViewModel 的 LiveData 并将用户输入转发到 ViewModel

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:48 25 4
gpt4 key购买 nike

我正在尝试想出一种方法让 EditText 更新 ViewModel 的数据并同时观察该数据的任何更改(例如,通过操作数据库带来的更改)。有没有办法在不使用数据绑定(bind)库的情况下做到这一点?

我在简单地使用 MutableLiveData 时面临的主要问题如下:

当用户在 EditText 中输入文本时,TextWatcher 会触发 ViewModel 以更新其数据,这反过来会将新文本设置到 MutableLiveData 对象。因为 EditText 正在观察 LiveData,所以会触发 onChange 并相应地设置 EditText 的文本,这又会再次触发 TextWatcher,从而形成无限循环。

最佳答案

我也遇到了这个问题,因为我不喜欢数据绑定(bind)库。我按照@kAliert 所说的那样做了,但是在我的 ViewModel 中保留了逻辑。我刚刚在 ViewModel 中接收我的文本更改事件的函数上添加了一个简单的 catch。它运行良好。

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

关于android - 如何在不使用数据绑定(bind)的情况下让 EditText 观察 ViewModel 的 LiveData 并将用户输入转发到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52516240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com