使用DataBinding绑定数据的步骤:
- 在build.gradle中启用DataBinding
android {
...
dataBinding {
enabled = true
}
}
- 创建数据对象
例:在类InfoManager中提供数据获取的方法,该类的路径为com.test.InfoManager
InfoManager类中:
...
private static InfoManager mInstance = new InfoManager();
private final ObservableInt info;
public static InfoManagergetInstance() {
return mInstance;
}
private InfoManager(){
info = new ObservableInt (0);
info.set(xxx);
}
Public ObservableInt getInfo(){
return info;
}
...
- 创建布局文件,在布局文件中设置DataBinding
布局文件:
<layout>
...
//导入data相关的类
<data>
<import type="com.test.InfoManager"/>
<import type="android.view.View" />
</data>
<TextView
...
//相关布局
...
//绑定形式:"@{user.name}"
app:info = "@{InfoManager.getInstance().info}"
/>
</layout>
- 创建绑定数据所需的类
数据绑定:
@BindingAdapter("info")
public static void setInfo(TextView textView, int info) {
// 自定义绑定逻辑
textView.setText("Custom: " + String.valueOf(info));
}
- 在Fragment或Activity中绑定布局
InfoLayoutBinding binding = DataBindingUtil.setContentView(this, R.layout.info_layout);
在做完这些之后依旧无法绑定,检查发现布局中< data >标签写在了< ConstraintLayout >布局中
< data >需要在< layout >内部才生效!!