{ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) adapter = RecordAdapter(requireActivity(), records) viewModel.records.observe(this) { // 当viewModel中的records数据更新时 // 会执行此段代码,进行UI的更新 records.clear() records.addAll(it) adapter.notifyDataSetChanged() }...
5、ViewModel + Room 结合使用 根据Google 官方的架构建议 , ViewModel 不与 Room 直接交互 , 而是由 Repository 将 Room 封装起来 , 由 ViewModel 与 Repository 进行交互 ; ViewModel 与 Room 结合使用 , 实际上与 Repository 进行交互 ; ViewModel 需要继承 AndroidViewModel , 并且需要在类中维护 Repository 成...
) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) viewModel = ViewModelProvider(this).get(MyViewModel::class.java) viewModel.myData.observe(this, Observer { data -> // 更新UI }) }}
Room能和LiveData很好的结合实现MVVM,Room可以利用LiveData的观察者模式,感知Lifecyle的状态,实现数据驱动UI,避免MVP模式下更新UI需要大量回调接口的繁琐。 下面整合Room、ViewModel、LiveData、ViewBinding,实现一个简单的MVVM示例项目。 1 引入依赖 引入ViewModel依赖: dependencies { def lifecycle_version = "2.4.1" // ...
下面整合Room、ViewModel、LiveData、ViewBinding,实现一个简单的MVVM示例项目。 1 引入依赖 引入ViewModel依赖: dependencies { def lifecycle_version = "2.4.1" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") ...
JetPack中比较好玩的对象化数据库。-- ROOM+ViewModel JetPack中比较好玩的对象化数据库。-- ROOM 同iOS CoreData发展趋势Android现在主流方向也是更轻更少代码的开发方式。所以这块需要持续跟进下 介绍 Room提供了三个主要的组件: @Database:@Database用来注解类,并且注解的类必须是继承自RoomDatabase的抽象类。该类...
一、Room + ViewModel + LiveData 框架使用核心要点 1、Room 框架优化分析 2、Google 官方建议的 Room + ViewModel + LiveData 架构 3、Room 与 LiveData 结合使用要点 4、Repository 层核心要点 5、ViewModel + Room 结合使用 6、Activity 组件中 ViewModel 使用要点 7、Room 框架主动查询数据库数据需保留除 LiveD...
源码分析:Jetpack 之 ViewModel 原理 ViewModel 管理数据,把VIEW中的数据独出来,单独进行管理 管理数据的保存与恢复,比如屏幕转动,用户点回退按钮,或切换语言等操作 可以很方便的监听到UI上的数据变化 主要和LiveData与Room组合使用 注意:ViewModel只是用来管理UI的数据的,千万不要让它持有View、Activity或者Fragment的引用...
ViewModel中使用`Transformations.map`或`Transformations.switchMap`等扩展函数来处理数据转换,确保数据状态的更新符合UI需求。由于数据库操作可能涉及耗时操作,协程用于实现异步操作,确保UI线程的流畅性。当数据库中的数据发生变动时,LiveData会自动通知观察者,使得UI能够及时更新。ViewModel中的数据变更会触发...
Room配合LiveData和ViewModel 下面我们通过一个Room+LiveData+ViewModel的例子来完成这篇文章的学习吧 话不多说,先上效果图: ①创建UserEntity @Entity(tableName = "user") data class UserEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, @ColumnInfo(name = "name", typeAffinity = ColumnInfo...