我正在尝试使用AndroidViewModel实现ViewModel模式。我看到了一些EditText
。为了使视图模型负责存储数据,我需要在输入数据时将数据传递给视图模型。
一种方法是为每个EditText
制作TextWatcher
,并在文本更改时将其保存到视图模型。这是正确的做法吗?
据我所知,ViewModel
处理您在视图容器中创建的View
s(可能是Fragment
或Activity
),而不受其生命周期变化的干扰。
对于你的问题:这里的技巧是你将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