安卓MVVM模式 - 用户输入

3
这是一个普遍的设计问题,我正在尝试理清最佳解决方案。假设我有一个本地数据库。我需要从数据库中检索一些信息并构建一个模型。该模型包含最小值、最大值和用户选择的值等内容。然后,我将此模型传递给我的视图模型。视图模型将其放入LiveData对象中,并告诉我要更新UI的片段。
接下来,我的片段会使用LiveData对象构建一个表单,包括最小值、最大值和用户输入的值。用户可以在单击保存按钮之前使用多个字段更改(通过选择器、日期选择器)等方式。
我想知道在用户填写表格时更新数据的最佳方法是什么。最初,我认为每输入一个字段,都应该更新我的LiveData对象,这样,如果屏幕被销毁或旋转,则可以根据已更新的LiveData对象重新构建UI。
但是,我被告知应该将值保留在变量中,直到用户单击保存按钮。然后,我应该更新LiveData对象,并将该数据存储在数据库中。在这种情况下,我想我应该使用SaveInstanceState来保留用户输入的值。
我知道可能没有明确的答案,但我想知道这种模式的最佳实践是什么。如果您需要更多信息,请告诉我。我看过很多MVVM示例,当后端数据发生变化时,LiveData会更新,但是没有太多关于处理用户输入的示例。
感谢您的任何建议。谢谢。

你需要一个使用Databinding和MVVM的用户更改Livedata示例吗? - Ümañg ßürmån
1个回答

2

将用户选择作为数据绑定字段存储在ViewModel类中,该类是使用Activity上下文从ViewModelProvider创建的。通过这种方式检索到的ViewModel实例即使在Activity因方向改变而重新创建时也会持久存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接