2.9 DataBinding知识点速览

正确可能只有一个,而错误却有千万种。

一、基础用法

  1. 启用dataBinding

//在module的build.gradle中
apply plugin: 'kotlin-kapt'//必须
android{
  //AS 4.0 以下,
  dataBinding{
    enabled true
  }
  //AS 4.1之后
  bindingFeature{
        dataBinding = true
        // for view binding :
        // viewBinding = true
  }
}
  1. UI改造

<layout>
    <data class="">
    
  </data>
  <!-- 原有的UI的xml布局放在layout标签内即可。data标签内存放用于xml的数据变量,类型 -->
  <LinearLayout>
  
  </LinearLayout>
  
</layout>
  1. viewBindingdataBinding

  2. xml中的数据类型

    variable声明变量;import导入类型;对于xml的特殊符号需要转义类似&amp;

    绑定xmldata格式:@{}@={}(双向绑定)

    • 可用表达式、函数调用、属性参数

    • ??判空

    • ?:三目运算符

    • @string/str_name资源引用,可用占位符format

    • +拼接字符,使用``反引号

    • default设置默认值

    • include绑定

    • 点击事件

    οnclick="@{()->vm.click()}"
    οnclick="@{(v)->vm.click(v)}"
    οnclick="@{()->vm.click(context)}"
    οnclick="@{BindHelp::staticClick}"
    οnclick="@{callback}"
    • EditText的双向绑定text="@={etStr}"

    • UI中关联xmldataBinding

    //activity中
    val binding =
                DataBindingUtil.setContentView<ActivityBaseUseBinding>(this, R.layout.activity_base_use)
    //fragment中 xxxBinding.inflater()

二、进阶用法

  1. android:onCheckedChanged="@{(switch,checked)->vm.broadcast(checked)}"

  2. Binding 响应UIdata Bean

  3. Adapter用于列表的适配器,include

  4. @BindingConversion转化支持

  5. @BindingAdapter高级支持

  6. @InverseBindingAdapter反相绑定

    1. @bindingadapter(xxx)

    2. @bindingadapter(xxxAttrChanged)

    3. @inverseBindingadapter

  7. @BindingMethods适配扩展支持binding的函数

坑的经验:

  1. TextViewtext属性,有其注意data不能为Number类型

  2. xml中字符不能为中文

  3. 反射属性、函数必须是public

  4. 使用liveData作为dataBinding的时候,切记ui中设置binding.lifecycleOwner

  5. observableField数据的时候,某些场合需要必须初始化,否则运行报错,不易排查

  6. IDE开发避免中文输入法引起字符飞崩,尤其xml中。

  7. ./gradlew app:build,./gradlew app:dependenciesgradle的指令常用,便于排错

    --stacktrace --debug等参数必要信息,使用Execution failed for task构建错误信息。

  8. clean,rebuild,clear cache,delete build和apk文件夹

  9. build.gradle,--offline,AS&gradle的版本匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值