使用 android 的数据绑定库,可以编写声明式布局,减少应用程序逻辑和布局之间的粘合代码。数据绑定库可以兼容到android 2.2。
数据绑定库要求使用 gradle 1.5 或者gradle更高的版本。数据绑定库目前还处于 beta 版本阶段,这意味着以后发布正式版的时候,使用方法可能发生比较大的修改。可惜目前只支持单向数据绑定(所以不想看了。。。,等支持双向了再说吧),只支持单向,写起来比用 ButterKnife + ButterKnifeZelezny 要麻烦。

使用步骤:
1. 开启数据绑定配置
2. 在 layout 文件中绑定数据
3. 在 java 代码中获取到绑定的数据对象,设置对象的数据

  • 开启数据绑定配置,在使用数据绑定的 app module 的 build.gradle 中添加下面代码片段
android {    ....    dataBinding {        enabled = true    }}
  • 在 layout 文件中绑定数据,为了在 layout 文件中使用数据绑定,增加了新的标签 layout 和 data,根标签必须使用 layout。下面包含 data 元素和 view 的根元素。view元素就是未使用数据绑定前的 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:text="@{user.firstName}"/>       <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.lastName}"/>   </LinearLayout></layout>

使用 < variable name=”user” type=”com.example.User”/> 声明一个变量 com.example.User 类型的变量 user。
使用@{user.lastName} 使用变量 user 的属性值。
User 类中的字段通常不会改变。比如下面两种情况

public class User {   public final String firstName;   public final String lastName;   public User(String firstName, String lastName) {       this.firstName = firstName;       this.lastName = lastName;   }}
public class User {   private final String firstName;   private final String lastName;   public User(String firstName, String lastName) {       this.firstName = firstName;       this.lastName = lastName;   }   public String getFirstName() {       return this.firstName;   }   public String getLastName() {       return this.lastName;   }}
  • 获取绑定的数据对象,设置对象的数据,在 activity 中使用下面的代码设置绑定的数据
@Overrideprotected 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);}

参考:
https://developer.android.com/tools/data-binding/guide.html
https://github.com/LyndonChin/MasteringAndroidDataBinding

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Intent 对象在 Android(安卓)开发中的应用
  5. Android中MediaMuxer和MediaCodec用例 - audio+video
  6. Android前台画面和后台service之间通信的方法之Broadcast(转)
  7. 编写高效的Android代码(提高运行速度,节省电量)
  8. 【Android】内嵌数据库IDE(可视化操作类)
  9. Android(安卓)Architecture Component Room持久化数据库(五)迁移Ro

随机推荐

  1. Android(安卓)Kotlin ARouter组件化构建
  2. Android-系统启动过程
  3. Android内存优化(二)--布局优化
  4. Android异步任务简单使用
  5. Android(安卓)Shader 颜色、图像渲染 pai
  6. android qq 消息页面 editview 获得焦点
  7. Android(安卓)L 新特性
  8. android N编译
  9. Android(安卓)资源文件屏幕适配
  10. Android实现调用震动的方法