首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

使用要点 : 首先 , 创建 自定义 ViewModel 视图模型 类 , 继承 androidx.lifecycle.ViewModel 类 , 该类就是 要设置 视图 数据模型 ; 与...DataBinding 结合使用时 , DataBinding 布局设置的就是该 视图模型 类对象 ; 该 ViewModel 类 , 还 使用了 LiveData , 可以实时监听数据改变...设置 视图组件 ; 与 DataBinding 结合使用时 , 将 ViewModel 对象设置 DataBinding 布局 ; // 3....还可以直接绑定 视图模型 ViewModel , 这是 DataBinding + ViewModel 组合用法 , 如果 ViewModel 中使用了 LiveData 变量 , 则变成了 DataBinding...对象设置 ViewModel 对象 , 即可完成数据绑定 实现了 DataBinding + ViewModel 组合使用 , 最后为 LiveData 设置观察者 , 实现了 DataBinding

1.3K20

Android技术栈(四)Android Jetpack MVVM 完全实践

只存在于布局布局生命周期控制器之间,当数据变化绑定布局生命周期控制器再转发给ViewModel,布局控制器可以持有DataBinding但ViewModel不应该持有DataBinding) ViewModel...data标签包裹的是变量领域,在这里你可以使用variable定义这个布局所要绑定变量类型,使用name来指定变量名,然后用type来指定其类型....`This a string`}" 自动导入的context变量,你可以xml的任意表达式使用context这个变量,该Context是从该布局的根View的getContext获取的,如果你设置了自己的...xml变量赋值,我们用的都是一些类似String的简单对象,其实我们也可以定义一些复杂的对象,一次性传递xml布局 //java public class File { public...:id 如果你使用了android:id,那么这个View就也可以当成一个变量在下文的DataBinding表达式中使用,就像写Java.它还会帮你View绑定ViewDataBinding,你可以这么使用它们

3.8K01
您找到你想要的搜索结果了吗?
是的
没有找到

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

DataBinding数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局的界面组件绑定应用数据源。...下面我们运行一下: 三、DataBinding使用   Android的DataBinding已经内置了,因此只需要在app模块的build.gradle开启就可以使用了。...最常用的就是当我Model数据改变,改变页面上的值。这个是单向绑定。...下面运行一下: ② 双向绑定   双向绑定是建立单向绑定的基础上,实际的开发中用到双向绑定的地方并没有单向绑定多,双向绑定举一个例子,输入框输入数据时候直接将数据数据进行改变,这里会用到...第二个就是响应的地方,通过这种方式去显示ViewModel对象的变量数据控件上。这里我把这两个TextView放到输入框的上方 第三个地方,也是双向绑定的意义,就是UI改变数据源。

14.4K86

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

DataBinding数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局的界面组件绑定应用数据源。...下面我们运行一下: 三、DataBinding使用   Android的DataBinding已经内置了,因此只需要在app模块的build.gradle开启就可以使用了。...最常用的就是当我Model数据改变,改变页面上的值。这个是单向绑定。...下面运行一下: ② 双向绑定   双向绑定是建立单向绑定的基础上,实际的开发中用到双向绑定的地方并没有单向绑定多,双向绑定举一个例子,输入框输入数据时候直接将数据数据进行改变,这里会用到...第二个就是响应的地方,通过这种方式去显示ViewModel对象的变量数据控件上。这里我把这两个TextView放到输入框的上方 第三个地方,也是双向绑定的意义,就是UI改变数据源。

2.2K32

Android Jetpack | DataBinding

DataBinding 是属于 Jetpack 的一个支持库,可以让你以布局声明属性的方式替代编码方式将布局的 UI 组件和应用数据进行绑定 通常我们让控件和数据交互的方式如下面的代码,调用 findViewById...1、创建一个新项目 略 2、启用 DataBinding 并转换布局 build.gradle android { ...... 标签就是我们放布局变量的地方,布局变量用于编写布局表达式,布局表达式被放置元素的属性值,格式是@{布局表达式} 3、实现你的第一个布局表达式 标签添加一个 String...类型的布局变量 TextView 控件的属性中使用变量,注意 id 和 variable...此时,@{name} 就是一个简单的引用布局变量布局表达式了 4、修改 Activity 的代码调用 修改 setContentView(R.layout.activity_main) 为 val

1K10

【Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )

, 如果 Activity 被销毁 , 则 onDestory 生命周期函数取消协程任务 ; viewModelScope : 该作用与仅在 ViewModel 中使用 , 与 ViewModel...协程作用域 需要绑定 ViewModel 生命周期 , 特定界面 , 如可旋转屏幕的 Activity 界面 , 如果使用 MainScope 协程作用域 , 当屏幕旋转 , 就会在 onDestory...生命周期函数 取消协程作用域 , 此时协程相关的临时数据都被取消了 ; 当旋转 Activity 界面 , 会调用当前 Activity 的 onDestory 生命周期函数 , 自然对应的协程作用域也会被取消.../Coroutine https://download.csdn.net/download/han1202012/87173470 Module 模块下的 build.gradle 导入 kotlin-kapt...Studio 中选择 " 菜单栏 | Build | Make Project " 选项 , 或者使用 " Ctrl + F9 " 快捷键 , 首先要编译生成相关数据绑定类 ; MainActivity

91720

Android 架构组件的最新进展 (上篇)

数据绑定数据绑定 (Data Binding) 库是一种支持库,借助该库,您可以使用声明性格式 (而非程序化地) 将布局的界面组件绑定应用数据源。...数据绑定可以理解为代码和 XML 标记语言之间的桥梁。 更快的编译速度 对开发者来说,处理界面数据绑定需要的时间成本不容忽视,我们现在将数据绑定注解处理的速度提高了 20%*。...如果您的工作涉及协同开发,还有一个好消息,那就是我们增加了对分布式构建缓存的支持。 最后,数据绑定支持增量注解处理,能提升增量构建的性能。...更好地支持重构 IDE 里使用重构的方式修改函数名称之后,XML 中会同步进行更新。 ? 更好用的报错信息 数据绑定出错的信息可能一下子跳出来 1,000 条,这种尴尬将成为过去。...是时候告别 findViewById 了 所有的这些绑定类均由 Gradle 插件生成,如果开发者修改了某个布局文件,会报错的也会只有这个文件,100% 编译安全。

89940

学习|AndroidJetPack的几个组件简单使用

上面这个是引用fragment-ktx的引用,引用这个库是为了让我们更简单的调用ViewModel,一会儿的代码我会写出不用这个的调用方法,和用这个的方法,当然引用这个它会提示要使用jvm1.8,所以还需要加上下面的这步...03 lifecycle-savestate 一般来说,我们用LiveData的话,应用程序在后台切换再回来后,当前的UI界面的数据也会保存的,新的Android版本后,一般程序后台一段时间后,系统会直接杀死程序了...然后再写一个按钮事件,就是点击按钮后直接对LiveData的两个数据进行写入,写入的方式上面也可以看出来,用的postValue。 布局文件的DataBinding <?...DataBinding最外层要改为layout,然后数据data中进行指定,其中variable的name就是下面的别名,type就是指向的数据源 ?...双向数据绑定的方式,就和Vue的方式是很像的 ? Button的事件也是在这里进行绑定的 ?

1.7K20

JetPack--DataBinding

MVP和MVVM,ViewModel与Presenter很类似,只不过ViewModel和View层多了双向绑定,当ViewModel数据更改,View层能够知道,反之,View层数据改变,ViewModel...1.xml中使用实体类 gradle添加DataBinding支持 defaultConfig{ ......,效果如下: 3.传递对象至include标签 有时我们会使用include标签封装一些布局,那么这些布局怎么拿到主布局定义的对象呢 首先定义include布局,转换成DataBing布局 <?...DataBinding支持双向绑定,前面我们实现了单向绑定,当变量值发生变化,那么控件上也会更新,双向绑定和单向绑定对比,新增了如果控件属性的值发生变化,那么变量的值也会发生变化 1.BaseObservable...我们现在将最开始的明星界面完全使用ViewModel代替xml变量,并新增了分数,我们点击点赞,分数+1 首先实体类如下: package com.aruba.databingviewmodellivedata

1.6K10

DataBinding系列之基础使用

布局文件被加载,DataBinding会自动生成绑定代码,从而将UI组件和数据模型关联起来。 通过学习DataBinding基础知识,可以让你的代码速度翻倍,提高开发效率和代码质量。...Windows 请按快捷键 Alt + 回车 Mac 请按快捷键 option + 回车 ---- 3.DataBinding绑定 3.1 数据类型 通常我们DataBinding绑定数据类型是...state.user.address : `默认地址`)}"/> 4.5 include 和 ViewStub 布局文件中将相应的变量传递给 include 布局,需使用自定义的 bind 命名空间将变量传递给...例如,include定义的变量id是:, 那么就使用 app:user="@{state.user}" 来绑定数据,与variable定义的name保持一致。...include引用布局的某个控件,你需要给include设置资源id,然后通过它去访问引用布局的控件,就以的例子为例,如果我想访问布局的TextView,我们可以这样写: binding?.

27130

Jetpack组件之DataBinding

; 数据绑定 如何将数据传递布局文件呢?首先,布局文件定义布局变量,指定对象的名字和类型,当然数据的操作标签里。...DataBinding具有Null校验,如果绑定值为null,则分配默认值null,如果类型为int,默认值为0。 表达式语言 布局可以包含简单的数据逻辑,可以使用以下运算符和关键字。...我们一级页面绑定数据后,如何将数据传递二级页面呢? <!...merge是用来帮助视图树减少重复布局的。 二级页面,我们需要定义一个和一级页面相同的布局变量,用于接收传递过来的数据。然后就可以使用book进行数据绑定了。...,如果在UI控件的属性使用布局表达式,那么当布局文件渲染绑定它的静态方法自动被调用。

1.2K20

Jetpack之LiveData详解

简介 LiveData 是Jetpack的一个组件,是一个可被观察的数据存储器类, 具有感知组件生命周期的能力,LiveData 可以感知组件生命周期活跃状态发送数据更新,组件销毁移除观察者对象,...在给 LiveData 添加观察者对象的时候可以绑定一个具有生命周期的组件,当组件生命周期处于活跃状态(即 STARTED 、RESUMED 状态)时数据更新才会通知观察者,当组件被销毁则会自动移除对应的观察者对象...添加依赖 module 的 gradle.gradle 里引入 LiveData 包,如下: dependencies { def lifecycle_version = "1.1.1"...this 是实现了LifecycleOwner 接口的对象,比如 support 里的 AppCompatActivity 等 当我们对 simpleLiveData 数据进行更新且观察者绑定的生命周期组件...LiveData 结合 ViewModel 使用 前面介绍 LiveData 的使用时都是直接在Activity里使用的,但是真实开发场景我们一般不直接在 Activity / Fragment 中使用而是

1.6K20

MVVM 进阶版:MVI 架构了解一下~

不过软件开发没有银弹,MVVM架构也不是尽善尽美的,使用过程也会有一些不太方便之处,而MVI可以很好的解决一部分MVVM的痛点。...模型层(Model):主要负责网络请求,数据库处理,I/O的操作,即页面的数据来源 由于androidxml布局的功能性太弱,Activity实际上负责了View层与Controller层两者的工作,...其次就是View层通过调用ViewModel层的方法来交互的,View层与ViewModel的交互比较分散,不成体系 小结一下,我的使用,MVVM架构主要有以下不足 为保证对外暴露的LiveData...{ _viewEvents.value = event } } 如上所示 我们只需定义ViewState与ViewEvent两个State,后续增加状态data class添加即可...(比如我)并不喜欢使用DataBindg,其实并没有使用MVVM双向绑定的特性,而是单一数据源 当页面复杂,需要定义很多State,并且需要定义可变与不可变两种,状态会以双倍的速度膨胀,模板代码较多且容易遗忘

1.9K20

Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

显示数据 五、绑定点击事件 六、协调布局使用 七、保存本地数据库 1....六、协调布局使用   页面默认的ActionBar占了无用的控件,我们可以自定义一个样式去替换当前页面的样式,themes.xml下增加如下代码: <style name="MainTheme...AppDatabase<em>中</em>的其他地方,如下图所示: 这里我修改了@Database注解<em>中</em>的内容,增加了新的表和版本升级<em>到</em>2,同时<em>在</em>构建<em>数据</em>库的时候增加一个迁移,最后增加wallPaperDao抽象方法...<em>在</em><em>使用</em>BaseQuickAdapter<em>时</em>,先创建适配器的<em>布局</em>,<em>在</em>layout下新建一个item_image.xml,里面的代码如下: <layout xmlns:android="http://schemas.android.com...xml,然后绑定viewModel,获取页面传递过来的数据,然后请求壁纸数据,再监听页面的回调,然后回调设置适配器的数据

2.6K10

Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

显示数据 五、绑定点击事件 六、协调布局使用 七、保存本地数据库 1....六、协调布局使用   页面默认的ActionBar占了无用的控件,我们可以自定义一个样式去替换当前页面的样式,themes.xml下增加如下代码: <style name="MainTheme...AppDatabase<em>中</em>的其他地方,如下图所示: 这里我修改了@Database注解<em>中</em>的内容,增加了新的表和版本升级<em>到</em>2,同时<em>在</em>构建<em>数据</em>库的时候增加一个迁移,最后增加wallPaperDao抽象方法,...<em>在</em><em>使用</em>BaseQuickAdapter<em>时</em>,先创建适配器的<em>布局</em>,<em>在</em>layout下新建一个item_image.xml,里面的代码如下: <layout xmlns:android="http://schemas.android.com...xml,然后绑定viewModel,获取页面传递过来的数据,然后请求壁纸数据,再监听页面的回调,然后回调设置适配器的数据

2K20

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

一、LiveData 简介 ---- 视图 View 与 数据模型 Model 通过 ViewModel 架构组件 进行绑定后 , 可以立即 将 ViewModel 数据设置 UI 界面...视图 View ; 二、LiveData 使用方法 ---- 首先 , ViewModel 视图模型 定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...; 使用 传统的开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 子线程通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义 LiveData ,...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , ViewModel , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData...= 0 } } 2、Activity 组件代码 Activity 系统组件 , 绑定 ViewModel , 从 ViewModel 获取 LiveData 显示 UI 界面 ,

1.2K20

Android  JetPack~ LiveData (一)   介绍与使用

一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发...LiveData它能感知绑定者的生命周期(如Activity,Fragment),不会发生内存泄露,因为它只会给活跃状态的activity回调,我们使用的时候通常都会在回调里去更新UI。...,setValue和postValue支持外部使用(public修饰) 普通类,可以直接new 3、LiveData与MutableLiveData区别 LiveData实体类里可以通知指定某个字段的数据更新...(下面会贴代码) MutableLiveData则是完全是整个实体类或者数据类型变化后才通知.不会细节某个字段 4、LiveData的使用 public class UserBean extends...总结: LiveData一般使用在实体类,MutableLiveData作用在变量上,他们通常和ViewModel结合使用,上面例子过于简单,工作当中可按照业务需要进行调整。

1.5K20
领券