Android MVVM 模式 - 用户输入
Android MVVM Pattern - User Input
这是一个一般性的设计问题,我只是在想办法解决这个问题。
假设我有一个本地数据库。我有一个用例可以从该数据库中检索一些信息并从中构建模型。这个模型有最小值、最大值和用户选择的值。然后我将这个模型提供给我的视图模型,视图模型又将其放入实时数据对象中并告诉我一个片段来更新 UI.
我的片段,然后获取这个实时数据对象并构建一个包含值的表单,包括最小值和最大值,以及用户输入的值。然后,用户可以更改多个字段(通过选择器、日期选择器),然后再单击保存按钮以保存整个表单。
我想知道在用户填写表单时更新数据的最佳方式是什么。最初我认为在输入每个字段时,我应该更新我的实时数据对象,这样如果屏幕被破坏或旋转,我的 UI 将根据我更新的实时数据对象重建。
但是,有人告诉我,我应该将值保存在变量中,直到用户单击保存按钮。然后我应该更新实时数据对象并将该数据存储在数据库中。在这种情况下,我想我会使用 SaveInstanceState 来保留用户输入的值。
我知道可能没有明确的答案,但我正在寻找这种模式的最佳实践。如果您需要更多信息,请与我们联系。当数据在后端发生变化时,我见过很多使用 LiveData 的 MVVM 示例,但当有用户输入时,我看到的例子并不多。
如有任何建议,我们将不胜感激。谢谢
将用户选择存储为使用 Activity 上下文从 ViewModelProvider 创建的 ViewModel class 中的数据绑定字段。即使 Activity 从方向更改中重新创建,以这种方式检索的 ViewModel 实例仍然存在。
这是一个一般性的设计问题,我只是在想办法解决这个问题。
假设我有一个本地数据库。我有一个用例可以从该数据库中检索一些信息并从中构建模型。这个模型有最小值、最大值和用户选择的值。然后我将这个模型提供给我的视图模型,视图模型又将其放入实时数据对象中并告诉我一个片段来更新 UI.
我的片段,然后获取这个实时数据对象并构建一个包含值的表单,包括最小值和最大值,以及用户输入的值。然后,用户可以更改多个字段(通过选择器、日期选择器),然后再单击保存按钮以保存整个表单。
我想知道在用户填写表单时更新数据的最佳方式是什么。最初我认为在输入每个字段时,我应该更新我的实时数据对象,这样如果屏幕被破坏或旋转,我的 UI 将根据我更新的实时数据对象重建。
但是,有人告诉我,我应该将值保存在变量中,直到用户单击保存按钮。然后我应该更新实时数据对象并将该数据存储在数据库中。在这种情况下,我想我会使用 SaveInstanceState 来保留用户输入的值。
我知道可能没有明确的答案,但我正在寻找这种模式的最佳实践。如果您需要更多信息,请与我们联系。当数据在后端发生变化时,我见过很多使用 LiveData 的 MVVM 示例,但当有用户输入时,我看到的例子并不多。
如有任何建议,我们将不胜感激。谢谢
将用户选择存储为使用 Activity 上下文从 ViewModelProvider 创建的 ViewModel class 中的数据绑定字段。即使 Activity 从方向更改中重新创建,以这种方式检索的 ViewModel 实例仍然存在。