您的位置:首页 > 移动开发 > Android开发

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

2016-05-18 16:06 549 查看
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);

---会持续更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: