这是一个一般性的设计问题,我只是想把最好的方法缠住头。
假设我有一个本地数据库。我有一个用例,可以从该数据库中检索一些信息,并据此建立模型。该模型具有最小值,最大值和用户选择的值。然后,将此模型提供给我的视图模型,该模型又将其放入实时数据对象中,并告诉我一个用于更新UI的片段。
我的片段,然后获取此实时数据对象,并使用包含最小值和最大值以及用户输入的值的值构建一个表单。然后,用户可以在单击保存按钮以保存整个表单之前更改多个字段(通过选择器,日期选择器)。
我想知道在用户填写表单时更新数据的最佳方法是什么。最初,我认为在输入每个字段时,我应该更新实时数据对象,这样,如果要破坏或旋转屏幕,则可以从更新后的实时数据对象重建UI。
但是,有人告诉我,我应该将值保留在变量中,直到用户单击“保存”按钮为止。然后,我应该更新实时数据对象,并将该数据存储在数据库中。在这种情况下,我想我会使用SaveInstanceState来保留用户输入的值。
我知道可能没有确切的答案,但是我正在寻找这种模式的最佳实践。如果您需要更多信息,请与我们联系。当后端的数据发生更改时,我已经看到了很多带有LiveData的MVVM示例,但是当需要用户输入时,并没有很多。
任何建议将不胜感激。谢谢。
答案 0 :(得分:2)
将用户选择存储为使用Activity上下文从ViewModelProvider创建的ViewModel类中的数据绑定字段。即使通过方向更改重新创建了活动,通过这种方式检索的ViewModel实例仍然存在。