DataBinding 系列文章:
DataBinding 与 mvvm 模式(一)文本类型数据绑定
DataBinding 与 mvvm 模式(二)其他类型数据绑定
首先我们回顾一下在程序中使用 DataBinding 的步骤:
- 启用 DataBinding
- 创建 viewModel
- 创建 layout 布局
- 建立绑定关系
OK~ ,上篇介绍的是最简单的文本类型数据绑定,这里的类型指的是控件需要的数据类型,比如 android:text 需要的就是文本类型数据,所以在 viewModel 中直接设置对应的 String 类型属性就可以了。如果我们要对控件绑定的数据是其他类型的,比如 android:textColor 、android:src ,这时该怎么实现呢? 有以下两种方法:
- getXxx 方法返回控件需要的数据类型
- 使用 @BindingAdapter 注解
下面分别通过这两种方法实现以下效果:
假如我们的 viewModel 中表示颜色的数据是 boolean 类型的:
private boolean isRed;
layout 文件:
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="person"
type="com.yhao.test.Person"/>
</data>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{person.name}"
android:textColor="@{person.isRed}"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:onClick="click"
android:text="change red"
/>