Android MVVM:该视图是否应针对每个用户交互通知视图模型,即使是微不足道的交互(仅具有UI结果/无数据)

时间:2019-05-14 00:17:52

标签: android mvvm architectural-patterns

据我所知:

  

在MVVM(Model-View-ViewModel)体系结构模式中,视图应   通知视图模型进行用户交互,例如单击按钮。的   视图模型通过更新其可观察的数据流(LiveData)进行响应   该视图将被观察到。因此,视图将更新UI   然后用户看到结果。

但是,当用户操作仅具有UI结果而没有相关数据或未操纵数据时,让我们考虑一些琐碎的情况。例如:一个单击按钮时,将切换另一个UI小部件的可见性。

我的问题是如何在仍然正确应用MVVM的情况下处理这种简单情况? 是否应该在不通知ViewModel的情况下直接更新UI?

1 个答案:

答案 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)
        }