据我所知:
在MVVM(Model-View-ViewModel)体系结构模式中,视图应 通知视图模型进行用户交互,例如单击按钮。的 视图模型通过更新其可观察的数据流(LiveData)进行响应 该视图将被观察到。因此,视图将更新UI 然后用户看到结果。
但是,当用户操作仅具有UI结果而没有相关数据或未操纵数据时,让我们考虑一些琐碎的情况。例如:一个单击按钮时,将切换另一个UI小部件的可见性。
我的问题是如何在仍然正确应用MVVM的情况下处理这种简单情况? 是否应该在不通知ViewModel的情况下直接更新UI?
答案 0 :(得分:0)
首先,所有与UI相关的事情都应该绝对通知ViewModel。您可以在ViewModel中如下定义事件。 BTW _itemClickedEvent定义用于封装。
self.class_variable_get(:@@endpoint)
之后,您可以通过您的方案的viewModel对象调用itemClickedEvent。
private val _itemClickedEvent = MutableLiveData<Boolean>()
var itemClickedEvent: LiveData<Boolean> = _itemClickedEvent
fun itemClickedEvent(state: Boolean) {
_itemClickedEvent.value = state
}
通过观察LiveData,您可以进行可见性或其他与UI相关的操作,如下所示
button.setOnClickListener {
viewModel.itemClickedEvent(true)
}