java - Android ViewModel 到模型事件

标签 java android mvvm viewmodel android-livedata

我正在使用 MVVM 架构使用 Google 的架构组件(ViewModel、LiveData)构建一个新的 Android 应用程序。

我很确定我已经有大部分流量了。我了解 View 如何使用 LiveData 来观察 ViewModel 的更改,以及 ViewModel 如何类似地观察 Model(在我的情况下是单例存储库)的更改。

当我试图将我的大部分业务逻辑保留在模型层中时,我希望 View 将事件“报告”到模型层,我的业务逻辑可以决定是否/如何处理事件。目前,我的业务逻辑可以更新存储库中的值,这会将值更改向下传播到 View ,但这只是单向的。

如何通知 View 事件模型?

最佳答案

View 不能直接向模型报告。这违背了干净的架构和 MVVM。

ViewModel 充当 View 和 Model 之间的联络人。 ViewModel 可能会从 View 中获取输入并将其放置在模型上,或者它可能与服务交互以检索模型,然后转换属性并且 View 将通过绑定(bind)或观察者收到更改的数据的通知。

如果您现在使用 kotlin(和 gradle 2.0 或更高版本),您可以 use listener bindings用于事件处理,这使您可以在通过 lambda 表达式触发事件时直接从 ViewModel 执行方法。然后是 ViewModel,它应该是在模型上执行工作的那个。当模型更新时,ViewModel 会收到观察者的通知,并且 View 也会通过绑定(bind)反射(reflect)更改。

关于java - Android ViewModel 到模型事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60958290/

相关文章:

java - 在java澄清中使用+=和三元运算符

android - 在类 android.databinding.ViewDataBinding 中找不到方法 safeUnbox(java.lang.Boolean)

wpf - 使用不同的源对 TreeView 进行分组

c# - Windows 窗体绑定(bind) : is there an event similar to DataBindingComplete, 但在所有绑定(bind)完成时触发?

c# - 项目具有多个可选区域的列表框

java - 如何使用 Java (Servlet) 验证来自应用程序内结算 Android Market 的签名数据

java - 找不到我的元素( Selenium 初学者)

c# - 在 webgl 中编写数字标牌播放器?

java - 线程 hibernate ,不做

Android ScrollView 不工作