要将 Databinding
添加到我们的应用程序中,我们需要将以下内容添加到 build.gradle
文件中:
android {
…
dataBinding {
enabled = true
}
}
android {
...
buildFeatures {
dataBinding true
}
}
Xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout>
<!-- UI layout's root element -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName, default=my_default}"/>
</ConstraintLayout>
</layout>
运算符
表达式语言看起来很像托管代码中的表达式。您可以在表达式语言中使用以下运算符和关键字:
- 数学+ - / * %
- 字符串连接+
- 逻辑的&& ||
- 二进制& | ^
- 一元+ - ! ~
- 转移>> >>> <<
- 比较== > < >= <=(注意<需要转义为<)
- instanceof
- 分组()
- 文字 - 字符、字符串、数字、null
- 投掷
- 方法调用
- 现场访问
- 数组访问[]
- 三元运算符?:
android:text="@{String.valueOf(index + 1)}"
android:visibility="@{age > 13 ? View.GONE : View.VISIBLE}"
android:transitionName='@{"image_" + id}'
空合并运算符
空合并运算符 ( ??) 如果不是 则选择左操作数,null 如果前者是 则选择右操作数null。
android:text=”@{user.displayName ?? user.lastName}”
这在功能上等同于:
android:text=”@{user.displayName != null ? user.displayName : user.lastName}”
属性参考
表达式可以使用以下格式引用类中的属性,字段、getter 和 ObservableField 对象的格式相同:
android:text=”@{user.lastName}”
Adapter
@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {
view.visibility = if (visible) View.VISIBLE else View.GONE
}