Data Binding Library(数据绑定库)--来自android官网的翻译

Data Binding Library(数据绑定库)--来自android官网的翻译


总序:

这篇文章说明如何在布局中使用数据绑定和使用最小的必要代码去绑定你的应用的逻辑和布局。

数据绑定库提供灵活和通用的方式,因为他是通过支持包的方式来构成,所以你可以使用所有的android sdk版本(android 7+)。

为了使用数据绑定功能,你的android gradle插件的版本必须为1.5.0-alpha1或者更高版本。


环境搭建

要使用数据绑定功能,可以通过android sdk 管理器从仓库中下载需要的sdk。

在app module的build.gradle文件下增加数据绑定的元素,来配置你的应用去使用数据绑定功能。

在gradle插件大于1.5.0alpha1版本上,可以直接在build文件下加入如下代码:

android {

    ....

    dataBinding {

        enabled = true

    }

}

确保你的android studio版本在1.5.0alpha1以上。


数据绑定的布局文件

数据绑定的布局和之前的布局稍有不同,它以<layout>标签作为根标签,接着是<data>标签,最后才是<vIew>元素。view元素就是你的根布局会绑定的布局文件。一个例子如下:

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android">

   <data>

       <variablename="user" type="com.example.User"/>

   </data>

   <LinearLayout

       android:orientation="vertical"

       android:layout_width="match_parent"

       android:layout_height="match_parent">

       <TextViewandroid:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="@{user.firstName}"/>

       <TextViewandroid:layout_width="wrap_content"

           android:layout_height="wrap_content"

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

   </LinearLayout>

</layout>


在<data>标签里面的user变量,描述了一个在布局中会使用的到的属性。

<variablename="user"type=“com.example.User”/>


在布局中,在元素属性中使用的表达式是用“@{}“来引用。例如,在设置textView的text属性是,如下来使用:

<TextView android:layout_width="wrap_content"

          android:layout_height="wrap_content"

          android:text="@{user.firstName}"/>


然后设置数据的实体

这里我们创建一个user的实体(对象),如下:

public class User{

   public final String firstName;

   public final String lastName;

   public User(String firstName,String lastName) {

       this.firstName = firstName;

       this.lastName = lastName;

   }

}

使用这个的好处是:对象的数据不会改变。

你也可以使用javabean来做:

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;

   }

}


以上两个文件都是等同的。@{user.firstName} 和 @{user.getFirstName} 同样可以起作用。


开始数据绑定

默认的,系统会自动根据布局文件的文件名(方式:文件名第一个字母大写,去除中间的“_”,在最后面加上后缀“Binding“)生成一个binding类。例如,布局文件名为,main_activity.xml,生成的binding类名字为,MainActivityBinding。这个类会包含布局文件的所有属性(例如:user变量)和如何使用绑定表达式去分派values。

最好的绑定方式是在加载布局的时候进行绑定。示例代码如下;

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

}

至此,可以运行你的app,就可以看到“test” “user”在页面上。你可以使用如下代码来获取到view:

MainActivityBinding binding =MainActivityBinding.inflate(getLayoutInflater());


如果在listview或者recyclerview适配器中使用数据绑定,你可能倾向于使用:

ListItemBinding binding =ListItemBinding.inflate(layoutInflater, viewGroup,false);

//or

ListItemBinding binding =DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup,false);


---会持续更新





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值