Jetpack之DataBinding

DataBinding的基础使用

将.xml文件转为DataBinding的文件,会出现一个<data>的标签,在其中可以定义变量<variables>或导入<import>:

    <data>

        <variable
            name="idol"
            type="com.shopkeeper.databinding.Idol" />

        <import type="com.shopkeeper.databinding.StarUtils" />

        <variable
            name="eventHandler"
            type="com.shopkeeper.databinding.EventHandleListener" />
    </data>

在绑定数据时,使用@{}语法:

        <TextView
            android:text="@{idol.name}"/>
        <TextView
            android:text="@{StarUtils.getDarling(idol.star)}"/>

在绑定事件的监听时,以onClick为例,可以使用@{}传入一个方法:

        <Button
            android:onClick="@{eventHandler.btnOnClick}"/>

该方法会传入一个View的实例

public class EventHandleListener {
    private Context context;

    public EventHandleListener(Context context) {
        this.context = context;
    }

    public void btnOnClick(View view){
        Toast.makeText(context,"like 02",Toast.LENGTH_SHORT).show();
    }
}

也可以绑定一个监听器(可以传入任意参数),以一个viewModel的add方法为例:

        <Button
            android:onClick="@{()->viewModel.add()}"/>

发表评论