【Jetpack系列】DataBinding简单使用(Kotlin)

目录

一、简单绑定

1.配置gradle

2.更改布局文件

3.实例化布局文件

4.传递数据到布局文件

二、响应事件

1.新建事件响应类

2.布局添加

3.绑定数据

4.绑定响应方法 

 三、二级页面绑定

1.适用场景

2.绑定方法

(1)一级界面传递数据

(2)二级界面接收数据

四、自定义BindingAdapter

1.用途

2.使用

(1)配置gradle

(2)自定义BindingAdapter

(3)调用BindingAdapter

五、双向绑定

1.用途 

2.使用

(1)新建Model类

(2)新建ViewModel类

六、双向绑定结合LiveData

1.用LiveData包装数据类

2.改造ViewModel

 3.activity中观察LiveData

 七、RecyclerView绑定

1.创建item布局

2.创建Adapter

3.activity中加载数据


一、简单绑定

1.配置gradle

打开module层级的build.gradle文件,在android层级下添加如下代码

    dataBinding{
        enabled = true
    }

2.更改布局文件

在布局文件中,光标移至最前面,按Alt+Enter,选择Convert to data binding layout,studio将自动更改为databinding布局

3.实例化布局文件

        val binding: ActivityDataBindingBinding =
            DataBindingUtil.setContentView(this, R.layout.activity_data_binding)

4.传递数据到布局文件

布局文件中<data>节点下添加<variable>,用于数据绑定 

    <data>
        <variable
            name="book"
            type="com.example.androidjetpack.DataBinding.Book" />
    </data>

activity中传递数据

        binding.book = Book("title", "author", 5)

 在布局文件中绑定数据

        <TextView
            android:text="@{book.title}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:text="@{book.author}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:text="@{book.rating}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

布局文件中引用静态类,在<data>节点添加引用

        <import type="com.example.androidjetpack.databinding.BookRatingJavaUtil" />

 使用进入到静态类

        <TextView
            android:text="@{BookRatingJavaUtil.getRating(book)}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

注:实际测试过程中,Kotlin的伴生对象静态方法在布局文件中引用会报错,后续将继续排查报错原因,故此处<import>的 BookRatingJavaUtil类为Java类

(原因已查明,参考https://blog.csdn.net/jie1123161402/article/details/81736677

运行效果:

二、响应事件

1.新建事件响应类

在activity中新建内部类,或独立成单独类文件

class EventHandleListener(var context:Context) {
    fun onClick(view: View) {
        Toast.makeText(context, "Clicked!", Toast.LENGTH_SHORT).show()
    }
}

2.布局添加<variable>

        <variable
            name="EventHandler"
            type="com.example.androidjetpack.databinding.EventHandleListener" />

3.绑定数据

在activity中绑定数据

        binding.eventHandler=EventHandleListener(this)

4.绑定响应方法 

在onclick中绑定响应方法

        <Button
            android:textAllCaps="false"
            android:text="Click"
            android:onClick="@
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值