Android 官方数据绑定 Data Binding Libr
2016-09-26 本文已影响542人
Nebula995
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
等等其他特性