Android Data Binding

请注明链接:https://blog.csdn.net/feather_wch/article/details/79789597

Data Binding

1、DataBinding引入

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    //这里
    dataBinding {
        enabled true
    }
    ...
}

2、用layout标签包裹布局,通过make project自动生成XXXBinding.java文件

3、DataBinding的优缺点

  1. DataBinding库非常小
  2. DataBinding没有多余的性能损耗(都是在编译时完成)
  3. DataBinding能减少错误率,只要使用正确,能100%无低级错误,提高代码质量。
  4. DataBinding会增加一点编译时长

4、DataBinding中的布局

<data>
    <variable
        name="user"
        type="com.feather.databind.User"/>
</data>

<android.support.constraint.ConstraintLayout
    xxx>
    <TextView
        xxx
        android:text="@{user.username}" />
</android.support.constraint.ConstraintLayout>

@{user.username}会从指定的User类中依次寻找getUsername()username()username属性

5、DataBinding中的属性

//绑定设设置数据
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
   User user = new User("Test", "User");
   binding.setUser(user);
}
//再次获得Binding对象
MainActivityBinding binding = MainActivityBinding.inflate(getLayoutInflater());

//在ListView或者RecyclerView的adapter中绑定列表的Item
ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);
//or
ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);

6、DataBinding中import与变量定义(基本类型、List、Map)

1-import

<data>
        <import type="com.feather.databind.User" alias="myuser"/>
        <variable
            name="user"
            type="myuser"/>
</data>

2-基本类型

<variable
    name="age"
    type="int"/>

<TextView
    android:id="@+id/age"
    xxx
    android:text="@{String.valueOf(age)}"
/>
mBinding.setAge(20);

3-集合(List、Map、Array)

<import type="java.util.Map"/>
<import type="java.util.ArrayList"/>
<variable name="list" type="ArrayList&lt;String&gt;"/>
<variable name="map" type="Map&lt;String,String&gt;"/>
<variable name="arrays" type="String[]"/>

<TextView
    xxx
    android:text="@{list.get(0)+map.get(`age`)+arrays[0]}"
    />
ArrayList<String> list = new ArrayList();
list.add("list0");
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("age", "28");
String[] arrays = new String[]{"China", "America"};

mBinding.setList(list);
mBinding.setMap(hashMap);
mBinding.setArrays(arrays);

7、DataBinding更改生成的位置和名称

<data class="com.feather.DataBinding">

参考和学习资料

  1. Databing 集合类的使用
  2. Data Binding 使用详解
  3. Data Binding 从抵触到爱不释手
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值