用法案列
1.在Module的build.gradle android模块中添加如下配置
android {
dataBinding {
enabled = true
}
}
2.创建数据模型,比如一个简单的JavaBean对象
public class UserBean {
private String name;
private int age;
public UserBean(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3.创建绑定数据的视图xml文件
这里我们使用Layout作为根节点,里面包含了data节点和布局文件,这里的data节点是连接View与Modle的通道,在data中声明variable变量,配置Bean对象,这样我们就可以在xml中通过@{}方法直接使用变量的数据。括号中直接引用Bean对象的属性完成赋值,注意这里的类型转换为String类型。
4.Activity中布局引入和赋值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
UserBean bean = new UserBean("zhangsan",30);
binding.setUser(bean);
}
这里用DataBindingUtil.setContentView代替了setContentView,然后创建一个 UserBean 对象,通过 binding.setUser(userBean) 与 variable 进行绑定。
注意:这个ActivityMainBinding 是继承ViewDataBinding,这个类的生成是有规则的,它是根据对应的布局文件的名字生成的,比如:activity_main–>ActivityMainBinding 、fragment–>FragmentBinding即:第一个单词首字母大写,第二个单词首字母大写,最后都会拼上Binding就是生成的Binding类。
DataBinding 绑定的数据除了Bean对象外,还可以是Java中的任意数据类型,比如基础数据类型,List,map,数组等
注意,如果这里的泛型支持报红线,或者编译不过,请使用转义字符代替,如 :
赋值方法如下:
数据的初始化:
List list = new ArrayList<>();
list.add("list01");
list.add("list02");
binding.setList(list);
HashMap map = new HashMap<>();
map.put("key0", "value01");
map.put("key1", "value01");
binding.setMap(map);
String[] arrays = {"字符串1", "字符串2"};
binding.setArray(arrays);
此文仅作为学习笔记,记录DataBinding的用法
博客参考:https://www.jianshu.com/p/70316eb4e0f8