Android开发教程 - 使用Data Binding(五)数据绑定
<data>标签前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,在两者的布局文件中,都可以绑定数据(对象),本篇文章我们就来介绍数据的绑定。
在这个标签中,我们通常用来做下面的事情:
定义所绑定的数据的名称(变量名)及对应类型引入页面所需的类示例如下:
<data> <import type="android.view.View" /> <import type="android.text.TextUtils" /> <variable name="visible" type="boolean"/> <variable name="title" type="String"/> <variable name="user" type="cn.examplecode.androiddatabinding.User"/></data>
其中"<import/>"标签表示引入一个类,比如上例中引入了View类和一个工具类TextUtils,当然也可以引入你自己的类,比如常量类或者工具类。
下面"<variable/>"标签定义了本页面所需要的各种数据名称或类型,其类型可以是java中的基础类型,或者自定义的类。
设置数据上面定义了页面中所需要的数据后,下面就需要通过获取到的Binding对象设置这些数据:
mBinding.setVisible(true);mBinding.setTitle("用户信息");User user = new User();user.setName("Steve Jobs");mBinding.setUser(user);
这里的setXXX()方法也是IDE自动根据<data>标签中的定义自动生成的。
在布局中使用这些数据如果写代码过程中发现IDE并没有自动正确生成对应的setXXX()方法,则参考这篇文章:Android Data Binding没有正常生成相关类/方法的解决办法,仅需几步操作即可使IDE正常生成。
数据设置完毕以后就可以在页面中使用这些数据了,使用起来也非常方便,比起在java代码中操作,可以省去不少代码。
<TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{title}" android:visibility="@{visible ? View.VISIBLE : View.GONE}" /><TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.name}" />
请注意上面的代码:
android:text="@{title}"
这一行是设置变量"title"的值到TextView中。
android:visibility="@{visible ? View.VISIBLE : View.GONE}"
这一行是根据变量"visible"的值来控制该TextView的显示与否,注意这里需要在<data>标签中引入android.view.View类,来使用View中的VISIBLE和GONE常量,这里可以使用问号表达式来判断。
android:text="@{user.name}"
user是一个自定义对象,user.name意思是取user对象中的name的值。
User定义如下,注意必须设置getter/setter:
public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
##总结
通过本篇文章相信你已经了解如何将数据与View进行绑定,这是Data Binding的核心,也是MVVM架构模式的基础,这里介绍的是比较简单的绑定,后面我们将介绍更加深入的使用,使用这些技术后就会发现Data Binding的强大和高效率。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。