当使用viewModel模式如何获得editText文本到viewModel



我正在尝试使用AndroidViewModel实现ViewModel模式。我看到了一些EditText。为了使视图模型负责存储数据,我需要在输入数据时将数据传递给视图模型。

一种方法是为每个EditText制作TextWatcher,并在文本更改时将其保存到视图模型。这是正确的做法吗?

据我所知,ViewModel处理您在视图容器中创建的View s(可能是FragmentActivity),而不受其生命周期变化的干扰。

对于你的问题:这里的技巧是你将View上的所有用户交互转发到ViewModel。所以,是的,TextWatcher将工作,但你必须把它写在ViewModel上,而不是在View上。此外,ViewModelHelper包含了你可以从相应视图的方法中调用的方法(例如:设置Activity.onSaveInstanceState()调用

https://github.com/inloop/AndroidViewModel/blob/master/library/src/main/java/eu/inloop/viewmodel/ViewModelHelper.java L162

我不认为你需要为每个EditText创建一个TextWatcher。你不能创建一个TextWatcher,你将分配给所有EditText s,并在它的一个方法中确定哪个TextView触发了这个并采取相应的行动吗?

在afterTextChanged事件中获取可编辑id

最新更新