前言
这篇文章主要讲解JetPack中的DataBinding组件的使用。
简单实用
解决问题:当界面被改写的时候,Activity中的控件代码也必须被改写。为了避免这个问题的发生,使用了databinding。
- Build.gradle配置项目使用dataBinding功能
defaultConfig{
...
dataBinding{
enabled true
}
...
}
- 将布局文件转换成dataBinding适配的布局文件
- 反向绑定(数据回绑到界面上)
- 在xml中的标签声明变化的数据。
- 通过@{}绑定变量和函数@{()->函数名称}
<layout>
<data>
<!-- 声明变量
name:变量名称
type:变量类型-->
<variable
name="jetViewModel"
type="com.martin.jetmo.jetpack.JetViewModel" />
<!-- 导包-->
<import type="com.dustess.baselib.common.assist.Check" />
</data>
<!--
使用时需要将文件语法
字符串:@{字符串内容},在引用时变量时,必须要有getXXX的函数,否则编译报错。
调用函数:@{()->调用的函数}
-->
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(jetViewModel.likeNumber)}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.196" />
<Button
android:id="@+id/button"
android:layout_width="87dp"
android:layout_height="36dp"
android:text="+1"
android:onClick="@{()->jetViewModel.add()}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<layout>
- 正向绑定
setCo