您当前的位置: 首页 > 
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Jetpack dataBinding(一)知识速览

沙漠一只雕得儿得儿 发布时间:2021-01-02 11:25:08 ,浏览量:0

一、基础用法

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
  }
}

2、UI改造


    
    
  
  
  
  
  
  

3、viewBindingdataBinding

4、xml中的数据类型

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

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

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

  • ??判空

  • ?:三目运算符

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

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

  • default设置默认值

  • include绑定

  • 点击事件

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

  • UI中关联xmldataBinding

 //activity中
val binding =
            DataBindingUtil.setContentView(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的版本匹配

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.2331s