DataBinding的用法介绍

DataBinding的用法介绍

DataBinding是Google 发布的一个数据绑定框架,它能够让开发者减少重复性非常高的代码,如findViewById 这样的操作。其核心优势是解决了数据分解映射到各个view的问题,在MVVM框架中,实现的View和Viewmode的双向数据绑定。

用法案列
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

你可能感兴趣的:(笔记)