android data binding

本文介绍了Android数据绑定库的使用,该库允许声明式布局,适用于Android 2.2及更高版本。需要Gradle 1.5或更高版本。尽管目前处于beta阶段且仅支持单向数据绑定,但通过开启配置、在layout文件中绑定数据和在Java代码中设置数据,开发者可以简化应用程序逻辑。详细步骤包括在build.gradle中启用配置,以及在layout文件中声明和使用数据变量。
摘要由CSDN通过智能技术生成

使用 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 中使用下面的代码设置绑定的数据
@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);
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Data Binding 是一个支持双向绑定的框架,可以将界面控件的值和数据模型绑定在一起,当数据模型发生变化时,界面控件的值也会相应地发生变化,反之亦然。使用 Android Data Binding 可以简化代码,提高开发效率。 下面是 Android Data Binding 的实现步骤: 1.在 build.gradle 文件中添加 Data Binding 的依赖: ```gradle android { ... dataBinding { enabled = true } } ``` 2.在布局文件中使用 Data Binding: 在布局文件的根元素中添加 `layout` 标签,并设置 `data` 属性: ```xml <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.example.User" /> </data> ... </layout> ``` `variable` 标签中的 `name` 属性表示变量名,`type` 属性表示变量类型。 在布局文件中使用双花括号语法绑定数据: ```xml <TextView android:text="@{user.name}" /> ``` 双花括号中的表达式表示要绑定的数据。 3.在 Activity 中使用 Data Binding: 通过 `DataBindingUtil.setContentView()` 方法将布局文件与 Activity 绑定: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User("John", "Doe"); binding.setUser(user); } ``` `ActivityMainBinding` 是通过布局文件自动生成的类,可以直接访问布局文件中的控件。 4.双向绑定: Android Data Binding 还支持双向绑定,可以将界面控件的值和数据模型绑定在一起,当控件的值发生变化时,数据模型的值也会相应地发生变化。 在布局文件中使用 `@={}` 语法设置双向绑定: ```xml <EditText android:text="@={user.name}" /> ``` 在数据模型中使用 `@Bindable` 注解标记属性,并在 setter 方法中调用 `notifyPropertyChanged()` 方法: ```java public class User extends BaseObservable { private String name; private String lastName; @Bindable public String getName() { return name; } public void setName(String name) { this.name = name; notifyPropertyChanged(BR.name); } ... } ``` `BaseObservable` 是一个基类,用于实现双向绑定。`BR` 是一个自动生成的类,用于标识属性的变化。当属性发生变化时,需要调用 `notifyPropertyChanged()` 方法通知 Data Binding 框架更新界面。 以上就是 Android Data Binding 的实现步骤。使用 Android Data Binding 可以简化代码,提高开发效率,但是需要注意一些细节,比如使用双向绑定时需要在数据模型中使用 `@Bindable` 注解,并在 setter 方法中调用 `notifyPropertyChanged()` 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值