DataBinding在AndroidStudio3.1上的应用

DataBinding的应用需要在android4.0(API14)及以上版本
首先需要在build.gradle文件中配置环境

android {
    ...
    dataBinding {
        enabled = true
    }
}

正常DataBinDing绑定到xml中的数据格式是,以layout标签为根,首先添加data标签,绑定数据,代码如下:【代码来源】

    
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
       <data>
           <variable name="user" type="com.example.User"/>
       data>
       <LinearLayout
           android:orientation="vertical"
           android:layout_width="match_parent"
           android:layout_height="match_parent">
           <TextView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="@{user.firstName}"/>
           <TextView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="@{user.lastName}"/>
       LinearLayout>
    layout>

其中data中的变量标签的名称user是自定义的,type类型是必须实际存在的实体类,在TextView中的引用就是以@{}包裹的方式

在Activity中DataBinding调用xml有两种方式,一种是通过DataBingdingUtil调用xml文件名:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
       User user = new User("Test", "User");
       binding.setUser(user);
    }

第二种是直接通过LayoutInflater隐式的生成:

    ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());

第三种:如果View已经被生成,需要重新绑定到Binding时可以调用如下:
MyLayoutBinding binding = MyLayoutBinding.bind(viewRoot);
如果是在Fragment、ListView、Recyclerview中则可以通过以下两种方式调用:

    ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);

    ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);

注意:DataBinding绑定xml并自动生成Bingding文件的名称,是根据你定义xml文件的文件名称自动生成的,例如:你定义了一个activity_main.xml的文件,那么自动绑定完成之后生成的Binding文件名就是ActivityMainBinding.java

你可能感兴趣的:(Android)