Android 官方数据绑定 Data Binding Library

DataBinding 支持 Android 2.1 (API level 7+)
并且 Gradle 1.5.0-alpha1 以上
以上条件毫无疑问不用考虑了,如果有不满足条件的请自行百度。废话不多说直接上实战

构建环境

在你的对应Module中的 build.gradle文件中添加,然后Rebuild Project就可使用DataBinding了

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


Layout 文件

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/name"
           android:text="@{user.firstName}"/>
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.lastName}"/>
   </LinearLayout>
</layout>

使用dataBinding后根布局就需要改成layout,然后在

<variable name="user" type="com.example.User"/>

最后再在Activity的onCreate中

@Override
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);
}

至此即实现了显示绑定

双向绑定

只需要在@后面加一个=即可

 <TextView android:text="@={user.lastName}"/>

获取view

DataBinding.id即可获取view,且自动识别类型

   MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
    binding.user
Object 对象
/**
 * Created by cheng on 2016/9/26.
 */
public class User {
   public final String firstName;
   public final String lastName;
   public User(String firstName, String lastName) {
       this.firstName = firstName;
       this.lastName = lastName;
   }
}

还有跟多用法请参看Android 官方文档
https://developer.android.com/topic/libraries/data-binding/index.html?hl=zh-cn#data_binding_layout_files
dataBinding特性

  • 支持双向绑定
  • 支持绑定Listener 事件
  • 支持绑定方法
  • 支持绑定属性
  • 支持直接获取View 免使用findViewById
    等等其他特性
    原文作者:轮回星云
    原文地址: https://www.jianshu.com/p/38f0de2c9300
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞