当前位置: 首页 > 知识库问答 >
问题:

Android ViewModel到模型事件

洪璞瑜
2023-03-14

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

我很确定我已经掌握了大部分流程。我了解视图如何使用LiveData来观察ViewModel的更改,以及ViewModel如何类似地观察模型(在我的例子中是一个单例存储库)的更改。

由于我试图将大部分业务逻辑保留在模型层,因此我希望视图能够将事件“报告”到模型层,在模型层中,我的业务逻辑可以决定是否/如何处理事件。目前,我的业务逻辑可以更新存储库中的值,这将把值更改传播到视图中,但这只是一个方向。

如何通知视图模型事件?

共有1个答案

章子航
2023-03-14

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

ViewModel充当视图和模型之间的联络点。ViewModel可以从视图中获取输入并将其放置在模型上,或者它可以与服务交互来检索模型,然后转换属性,视图将通过绑定或观察者被通知更改的数据。

如果使用kotlin(以及gradle 2.0或更高版本),现在可以使用侦听器绑定进行事件处理,这样可以在通过lambda表达式触发事件时直接从ViewModel执行方法。然后,ViewModel应该是在模型上执行工作的人。更新模型时,观察者会通知ViewModel,视图也会通过绑定反映更改。

 类似资料:
  • 1. 什么是事件模型? “百度分析云”基于“user-event”的数据模型。 您可以简单理解为两张大表,一张记录人的属性,一张记录人的行为。两张表通过唯一ID进行关联。 在event表,即事件表里,每一条用户行为就是一条记录。 2. 事件模型相比于传统PV模型的优势? 传统的流量分析工具会以“PV(页面浏览量)”为核心,去衡量产品的价值。而随着流量红利的消退,以及线上线下日趋融合,PV指标已经不

  • 监听函数 浏览器的事件模型,就是通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到了这个事件,就会执行对应的监听函数。这是事件驱动编程模式(event-driven)的主要编程方式。 JavaScript 有三种方法,可以为事件绑定监听函数。 HTML 的 on- 属性 HTML 语言允许在元素的属性中,直接定义某些事件的监听代码。 <body onload="doSomet

  • 模型事件实现 psr/event-dispatcher 接口,默认由 hyperf/event 组件提供功能支持。 运行事件 在 ORM 的运行期间,会对应触发以下事件,您可以进行对这些事件进行监听以满足您的需求。 事件 描述 Hyperf\Database\Events\QueryExecuted Query 语句执行后 Hyperf\Database\Events\StatementPrepa

  • 事件监听分两种,一种是仅限于对象的事件,另一种是静态方法触发的事件。 监听方式分两种:1、在类里写监听代码;2、定义监听类 批量操作的事件监听,一般建议用监听类方式。对象的事件监听根据习惯选择即可。 事件列表 模型对象事件 事件名 常量 描述 BeforeInsert ModelEvents::BEFORE_INSERT 插入前,insert()/save()触发 AfterInsert Mode

  • 模型事件 模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。 模型事件只在调用模型的方法生效,使用查询构造器操作是无效的 模型支持如下事件: 事件 描述 快捷方法 before_insert 新增前 beforeInsert after_insert 新增后 afterInsert before_update 更新前 beforeUpdate afte

  • 1. 什么是事件模型? “百度分析云”基于“user-event”的数据模型。 您可以简单理解为两张大表,一张记录人的属性,一张记录人的行为。两张表通过唯一ID进行关联。 在event表,即事件表里,每一条用户行为就是一条记录。 2. 事件模型相比于传统PV模型的优势? 传统的流量分析工具会以“PV(页面浏览量)”为核心,去衡量产品的价值。而随着流量红利的消退,以及线上线下日趋融合,PV指标已经不