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

【Jetpack】ViewBinding 与 DataBinding 简单对比

一、DataBinding DataBinding 是 2016 年的 Android Studio 2.0 版本 开始使用的 , 其作用是实现 数据模型 Model 与 视图 View 的绑定 , 该绑定是双向的绑定...; 数据模型 Model 就是 数据类的实例对象 ; 视图 View 指的是 Xml 布局文件 ; DataBinding 就是将 数据模型实例对象 配置到 Xml 布局文件 ; DataBinding...可以代替的代码逻辑 : findViewById setOnClickListener setText setVisibility setEnable setXxx 很明显 , DataBinding...可以 在 Activity / Fragment / Dialog 获取组件 , 在 Xml 布局文件 设置点击事件 , 设置文本 , 设置可见性 等等 ; 二、ViewBinding ViewBinding...是 2019 年 Android Studio 3.6 版本 开始使用的 , 其作用是 Xml 布局文件 生成绑定类 , 借助该 绑定类 , 可以 快速获取 Xml 的组件 ; ViewBinding

30220

Android Jetpack 组件之 DataBinding 详解

dataBinding 需要在 app module 下面的 build.gradle 文件中进行配置,具体如下: // 设置支持 dataBinding dataBinding { enabled...= true } 布局文件配置 Data Binding Library 会自动生成将布局视图和数据对象绑定所需要的类,Data Binding Library 的布局文件以 layout 标签为根标签...user.lastName}" - 空指针异常处理 生成的绑定类会自动检查 null 值以避免 NullPointerException,在表达式 @ {user.name} ,如果 user ...@{} 表达式中使用字符串 如何在 @{} 表达式中使用字符串而不是字符串变量呢,有两种方式,具体如下: ```java ## 事件绑定 使用 databinding 时可以采用方法引用或监听绑定的方式来设置事件监听...监听绑定 这种方式是在事件发生时创建事件监听器,相较方法引用可以传递自定义参数在事件回调,首先,创建一个事件回调方法如下: ```java public class MyPresenter { private

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

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

DataBinding 结合使用时 , 在 DataBinding 布局设置的就是该 视图模型 类对象 ; 该 ViewModel 类 , 还 使用了 LiveData , 可以实时监听数据改变...设置视图组件 ; 与 DataBinding 结合使用时 , 将 ViewModel 对象设置DataBinding 布局 ; // 3....LiveData#observe 函数 LiveData 设置 androidx.lifecycle.Observer 监听器 , 如果 监听到了 LiveData 数据变化 , 直接 回调 监听器的...实例对象 , Activity 组件设置布局文件; // 1...., 用于在 运行过程 , 一旦 ViewModel 数据发生改变 , 就 通知 View 视图组件 , 更新数据显示 ; LiveData 生效需要 MutableLiveData 设置 androidx.lifecycle.Observer

1.2K20

【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )

以及注解属性 ; 在 Activity 基类 , 获取该注解 以及 注解属性 , 进行相关操作 ; 一、Android 事件设置三要素 ---- 根据以下设置组件点击事件的代码 , 分析事件注入的要素...v) { } }); 点击事件 : 设置点击事件 , 需要调用 View.setOnClickListener 方法进行设置 ; 监听器类型 : 设置监听器类型 ,..., 长按事件 , 上述事件设置三要素分别是 点击事件 : View.setOnLongClickListener 监听器类型 : View.OnLongClickListener 事件触发回调方法 :...; 二、修饰注解的注解 ---- 在 Java Web 开发 , 经常使用注解进行相关配置 , Spring ; 配置 EventBase 注解 , 用于修改事件注入的注解 , 点击事件与长按事件...获取 Activity 类 , 并使用反射获取类的所有属性字段 , 获取所有的 @OnClick 和 @EventBase注解 , 如果找到该注解 , 执行 setOnClickListener 设置视图组件对象的点击方法

80810

Android Jetpack系列之ViewBinding和DataBinding

ViewBinding 通过视图绑定,系统会为模块的每个 XML 布局文件生成一个绑定类,通过绑定类,我们可以直接操作控件id,而不需要findViewById,这样我们可以避免控件id无效出现的空指针问题...首先我们新建项目,新建MainActivity,对应的布局文件名为:activity_main,在模块的build.gradle开启视图绑定: viewBinding { enabled =...DataBinding 数据绑定简单的解释就是,之前我们需要通过获取控件 通过控件设置数据,现在有了数据绑定 我们可以直接在布局文件中直接绑定数据。...接下来 我们添加一个按钮 在按钮重新设置user的数据 btnChanged = findViewById(R.id.btn_change); btnChanged.setOnClickListener...DataBinding和ViewBinding 到这里,我们已经可以使用基础的功能了,后续在项目开发还需要多实践操作。

1.9K20

Android Jetpack 之ViewBinding和DataBinding

ViewBinding 通过视图绑定,系统会为模块的每个 XML 布局文件生成一个绑定类,通过绑定类,我们可以直接操作控件id,而不需要findViewById,这样我们可以避免控件id无效出现的空指针问题...首先我们新建项目,新建MainActivity,对应的布局文件名为:activity_main,在模块的build.gradle开启视图绑定: viewBinding { enabled =...DataBinding 数据绑定简单的解释就是,之前我们需要通过获取控件 通过控件设置数据,现在有了数据绑定 我们可以直接在布局文件中直接绑定数据。...接下来 我们添加一个按钮 在按钮重新设置user的数据 btnChanged = findViewById(R.id.btn_change); btnChanged.setOnClickListener...DataBinding和ViewBinding 到这里,我们已经可以使用基础的功能了,后续在项目开发还需要多实践操作。

3.7K30

DataBinding最全使用说明

之类的 findById只是他的一个小小的辅助功能而已, 我推荐使用Kotlin来解决这个需求; Databinding的大部分情况下错误提示很完善, 个别XML书写错误也易于排查 我想强调的是Xml的...数据变化(回调监听器)触发视图变化, 然后视图又会触发数据变化(再次回调监听器), 然后一直循环, 设置相同的数据也视为数据变化....但是如果是视图设置数据则会走其他函数(get), 如果该函数返回的类型和Model的类型不匹配则会报异常, 除非你将那个函数改为类型匹配的....) BindingMethods系优先级高于BindingAdapter系列 所有注解的功能都是基于XML属性值Databinding表达式才生效(即@{}) 表达式 这里指的是XML文件中使用的表达式...通过DataBindingUtils工具将你自定义的派生类设置Databinding, 这里包含全局默认和单例.

1.9K20

Android开发笔记(六十六)自定义对话框

setPositiveButton : 设置肯定按钮的信息,文本、点击监听器。 setNegativeButton : 设置否定按钮的信息,文本、点击监听器。...setNeutralButton : 设置中性按钮的信息,文本、点击监听器。 --以上方法用于设置交互按钮。...下面是Dialog的常用方法: Dialog构造函数 : 可定义对话框的主题样式(样式在styles.xml定义)。如是否有标题、是否半透明、对话框的背景等等。...setBackgroundDrawable : 设置内容视图的背景。 getDecorView : 获取当前窗口的顶层视图,可以理解根部视图。...然后注册相关的事件监听器两个按钮的点击事件,滚轮的选中事件。最后是一些参数设置,包括标题、当前位置、文字大小、文字颜色等等。

2.4K20

Android 视图绑定 ViewBinding

一个叫做视图绑定(ViewBinding),而另外一个叫做数据绑定(DataBinding)。 1....配置完毕后,Gradle一下整个项目,AndroidStudio会自动每个XML布局文件生成一个绑定类,并不需要我们给xml文件添加任何代码。...也就是上面实例设置null。 这是因为Fragment的存活时间比它的视图时间长。否则会出现OOM异常。...而相较于DataBinding 的优势在于: 更快的编译速度:视图绑定不需要处理注释,因此编译时间更短。 易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用采用速度更快。...在模块启用视图绑定后,它会自动应用于该模块的所有布局。 而DataBinding 的优势就在于:布局和数据的双向绑定了。 所以其实我们可以在项目之中同时使用视图绑定和数据绑定。

1.4K10

【Android从零单排系列二十】《Android视图控件——ListView》

可以在布局文件添加控件来显示列表项的各个元素。 添加数据:通过适配器向ListView添加数据,可以使用适配器的方法(add()、addAll())添加单个或多个数据项。...android:dividerHeight:设置列表项之间的分割线高度,可以使用具体数值和单位("dp")。...setOnClickListener(View.OnClickListener listener):设置点击事件监听器,处理列表项的点击事件。...setOnItemClickListener(AdapterView.OnItemClickListener listener):设置列表项的点击事件监听器,处理列表项的点击事件。...同时,你还可以添加点击事件监听器来处理ListView列表项的交互操作。 五 总结 istView是Android开发中常用的列表视图控件,用于展示大量数据并实现用户的垂直滚动浏览。

35410

Android 使用View Binding的方法详解

现在有了新的选择–View Binding,官方解释: 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块启用视图绑定之后,系统会为该模块的每个 XML 布局文件生成一个绑定类。...绑定类的实例包含对在相应布局具有 ID 的所有视图的直接引用。 在大多数情况下,视图绑定会替代 findViewById。 使用 View Binding可按模块启用。...: binding.tvName = "name" binding.btnOpen.setOnClickListener{ Log.d(TAG,"btnOpen click") } 区别 与findViewById...与databinding的区别:databinding仅处理使用 <layout 代码创建的数据绑定布局;View Binding不支持布局变量或布局表达式,因此它不能用于在xml中将布局与数据绑定。...如果是使用databinding的项目,可以使用View Binding作为补充,用来处理非<layout 根标签的xml。(ps:貌似不可能出现这种场景?

1.7K41

【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )

) , 定义了 2 个注解 , 第一个是方法上的注解 , 用于修饰方法 ; 第二个是修饰注解的注解 , 该注解用于配置注入的方法 ( 事件监听方法 | 监听器类型 | 监听器回调方法 ) ;...---- 获取 View 组件的事件设置方法 , 如果设置的是点击事件 , 就是获取 setOnClickListener 方法 , 如果设置的是长按事件 , 就是获取 onLongClickListener...方法 , 如果设置的是触摸方法 , 就是获取 setOnTouchListener 方法 ; 获取方法时 , 需要传入方法的参数 , 就是设置的事件监听器对象 , 点击事件的事件监听器是 View.OnClickListener...监听器 , 触摸事件的事件监听器是 View.OnTouchListener 监听器 ; // 获取 View 视图组件的 listenerSetter...的 setOnClickListener 方法, 设置点击事件 listenerSetterMethod.invoke(view, proxy);

1.7K20

【Android从零单排系列二十五】《Android视图控件——RecyclerView》

一 RecyclerView基本介绍 RecyclerView是Android支持库的一个强大的视图容器,用于显示和管理大量数据集合的列表或网格。它是目前推荐使用的替代方式之一。...常见方法: setAdapter(Adapter adapter):设置RecyclerView的适配器,用于提供数据和创建视图。...setOnClickListener(View.OnClickListener listener):整个RecyclerView设置点击事件监听器。...复用机制:RecyclerView引入了ViewHolder模式,可以重复利用子项的视图,在滚动过程减少布局操作,提高性能。...事件处理:RecyclerView提供了方便的回调接口来处理点击、长按等事件,并且支持滚动监听器和拖拽排序等高级交互功能

26910

Android Jetpack系列——DataBinding 最佳实践

DataBinding里的注解方法讲解 在正式介绍 Binding adapters 之前,我们先了解一下 DataBinding 里的注解方法。 @Bindable 用于数据更新自动刷新视图。...使用 @Bindable 来标记的 get 方法,在编译时,会在BR类当中生成对应的字段,然后与 notifyPropertyChanged() 方法配合使用,当该字段的数据被修改时,dataBinding...接下来我们看一下如何在代码里实现: class StudentInfo : BaseObservable() { @get:Bindable var name: String?...app:adapter="@{adapter}" app:layoutManager="LinearLayoutManager"/> 通过上面的方式,我们就实现了通过在RecyclerView配置属性达到...而app:layoutManager="LinearLayoutManager"属性是RecyclerView自己提供的一个属性,为了方便我们RecyclerView设置layoutManager,其内部采用反射构造一个目标

1.9K40

Kotlin学习日志(六)控件使用

属性,修改isChecked的属性即为设置是否勾选,而获取isChecked的属性值即为判断是否勾选,这种合二一的情况还有一些,如下表: 按钮控件的属性说明 Kotlin的状态属性 Java的状态获取与设置方式...时,单选按钮就在水平方向上排列,该属性vertical时,单选按钮就在垂直方向上排列,并且RadioGroup下面除了RadioButton外,也可以挂载其他子控件,TextView、ImageView...图像视图ImageView在代码调用的方法说明如下: setImageDrawable : 设置图形的Drawable对象。 setImageResource : 设置图形的资源ID。...setScaleType : 设置图形的拉伸类型,在Kotlin可直接给属性scaleType赋值,如下表所示: scaleType类的拉伸类型 说明 ScaleType.FIT_XY 拉伸图片使之正好填满视图...当然这些效果你也可以直接在布局文件写好 ? 这里设置也是一样的效果。

1.7K30

Android开发笔记(八十六)几个特殊的类

常见的监听器接口有: 1、点击监听器OnClickListener、OnLongClickListener、OnCheckedChangeListener、OnItemClickListener、...,AnimationListener、OnPageChangeListener、TextWatcher,详见《Android开发笔记(四十四)动态UI事件》; 3、浏览器交互监听器WebViewClient...抽象类与普通类的区别主要有三点: 1、抽象方法必须public或者protected,因为如果private,则不能被子类继承,就无法实现该方法; 2、抽象类与接口一样都不能直接实例化对象;...、SpinnerAdapter、BaseAdapter等等,详见《Android开发笔记(三十八)列表类视图》; 2、页面适配器,PagerAdapter、FragmentPagerAdapter、...类内部类 类内部类在类内部定义,它与上级类的成员方法平级;之所以单独形成一个内部类,是因为类功能可以单独管理;但它又不新建一个java文件,是因为内部类与上级类存在一定程度的耦合。

58720
领券