目录
一、简单绑定
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="@