DataBinding笔记

本文介绍如何在Android项目中启用DataBinding,包括配置步骤、XML布局文件的编写方式、数据绑定语法及表达式的使用,并展示了如何在Activity和Fragment中绑定DataBinding。
  1. 启用dataBinding
//在module的build.gradle中
apply plugin: 'kotlin-kapt'//必须
android{
//AS4.0以下
dataBinding{
enabled true
}
//AS 1.1之后 
bindingFeature {
dataBinding = true 
// for view binding: 
// viewBinding = true
}
}
  1. UI改造
 <layout>
 <data class="">
  <variable
            name="data"
            type="com.example.***.MyViewModel" />
 </data>
 <!--原有的U1的xml布局放在layout标签内即可。data标签内存放用于xml的数据变量,类型-->
 <LinearLayout>
 </LinearLayout>
 </layout> 
  1. xml中的数据类型:
    variable声明变量;
    import导入类型;
    对于xml的特殊符号需要转义类似&amp;
    绑定xmldata格式: @{}@={}(双向绑定)
    可用表达式、函数调用、属性参数。
    ??判空
    ?:三目运算符
    @string/str_name资源引用,可用占位符format
    +拼接字符,使用``反引号
    default设置默认值,在开发的时候ui显示
    include绑定
    点击事件 :
    onclick="@{()->vm.click()}"
    onclick="@{(v)->vm.click(v)}"
    onclick=@{()->vm.click(context)}"
    onclick="@{BindHelp: :staticCiick}"
    onclick="@{callback}"
    EditText的双向绑定text="@={etStr}",数据变化导致UI变化是正向绑定,UI变化导致数据变化是反向变化。
    UI中关联xmldataBinding:
  2. 在activity/fragment可以用以下代码和DataBinding绑定
//activity中
val binding = 
DataBindingUtil.setContentView<ActivityBaseUseBinding>(this,R.layout.activity_title)
//fragment中***(FragmentTitle)Binding.inflate(inflater,R.layout.fragment_title,container,false)
binding.data = myViewModel
binding.lifecycleOwner = requireActivity()
  1. 使用
    首先是布局文件:一个TextView:
    在这里插入图片描述
    可以看到最后一行 text=“@{name}”
    name是定义在标签里面:一个定义好的变量
    在这里插入图片描述
    然后在Activity里面绑定后就可以使用 binding给它赋值:"binding.name = null"这样;
    还可以自定类对象:
    普通赋值:
    SSSSSSSSSSSSSSSSSSSSSS
    定义某一个属性:在布局文件中:
    在这里插入图片描述
    在这里插入图片描述
    对某些属性观察,要根据自己的需要写set()get()的代码:
    在这里插入图片描述
  2. 在RecycleView中使用:
    在这里插入图片描述
    在这里插入图片描述
    然后在Activity里面用binding.adapter = Adapater()赋值,注意写法:
    在这里插入图片描述
    @BindingAdataer高级支持:可以让一些本来不支持的参数转换成支持的参数;第一个参数value值和布局参数里面对应的参数对应,这里写的是"android:textColor";在getColor()方法里面这里的第一个参数必须是TextView,第二个需要传入的参数类型。
    在这里插入图片描述
    在这里插入图片描述
    @BindingConversion转化支持:这里面的red;
    在这里插入图片描述
    在方法里面的参数是传入的数据对象类型,返回值是你需要的数据结果:
    在这里插入图片描述
    @BindingMethods:内部方法三个参数:第一个是作用的类,第二个是作用的哪个属性值,第三个是作用的方法。
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值