我在我的应用程序中使用Android 架构组件。我正在处理的用例实际上非常简单。
考虑一个简单的 Todo 应用程序,其中 todo-detail 片段正在观察来自 ViewModel 的实时数据,该 ViewModel 包含当前打开的 todo-item 的实例。
由于此片段处于编辑模式,它将允许用户编辑项目的属性。
用例 1
有一个带有灰色标志图标的图像按钮。当用户点击它时,该项目被标记为“高优先级”并将标志的颜色更改为红色。
为了实现这一点,我将属性更新viewModel.value.isHighPriority
到true
视图模型实例上,这会导致数据发生变化,从而导致片段监听它。如果 ,片段显示标志颜色红色viewModel.value.isHighPriority = true
。所以基本上来自视图的 UI 事件会循环回到导致它更新的视图。
用例 2
考虑一个待办事项的标题。它显示在 Android 的EditText
. 在这种情况下,如何使用用户在框中输入的数据更新视图模型?我当然不想劫持编辑文本的文本更改事件并逐个字符处理。这对我来说似乎是不必要的黑客攻击。
这整件事让我重新思考我处理更新以从视图中查看模型的实时数据的方式。如果我正在做的事情(2 路数据绑定)不是一个好的做法,请建议我如何处理视图接收 UI 事件导致更新视图本身当前呈现的数据的情况。