Data Binding的介绍
Data Binding:数据绑定
去年谷歌 I/O大会上介绍了一个非常厉害的新框架DataBinding, 数据绑定框架给我们带来了很大的方便,以前我们可能需要在每个Activity里写很多的findViewById,不仅麻烦,还增加了代码的耦合性,如果我们使用DataBinding,就可以抛弃那么多的findViewById,省时省力。说到这里,其实网上也有很多快速的注解框架,但是注解框架与DataBinding想比还是不好用,而且官网文档说DataBinding还能提高解析XML的速度,其实DataBinding的好用,不仅仅体现在可以省去使用很多啰嗦findViewById,还有很多。往下看你就会明白的。
文/非著名程序员(简书作者)
原文链接:http://www.jianshu.com/p/2d3227d9707d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
现在有比较流行的注解RoboGuice、ButterKnife,但是今天我们来讲解Data Binding的使用方法。
环境搭建
确保 Android 的 Gradle 插件版本不低于 1.5.0-alpha1:
classpath 'com.android.tools.build:gradle:1.5.0'
现在AS更新到2.2版本,2.1版本是目前的稳定版,也是我现在使用的版本。
classpath 'com.android.tools.build:gradle:2.1.2'
同时在你的build.gradle上贴上两句:
compile 'me.tatarka.bindingcollectionadapter:bindingcollectionadapter:1.1.0'
compile 'me.tatarka.bindingcollectionadapter:bindingcollectionadapter-recyclerview:1.1.0'
好了,接下来让我们来新建一个项目吧!
创建项目
创建项目就不用多说了吧!项目创建好了,在xml布局文件中,代码会跟以往的不太一样。
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<!--新增节点-->
<data>
...
</data>
<!--原先的根节点-->
<LinearLayout>
...
</LinearLayout>
</layout>
新建一个User类:
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 firstName;
}
public String getLastName() {
return lastName;
}
}
activity_main.xml
<data>
<import type="com.example.androiddatabinding.User"/>
<variable name="user" type="User"/>
</data>
<LinearLayout
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>
细心的童鞋会发现android:text=”@{user.lastName}”这个奇怪的代码,这就是数据与变量进行绑定,因此,xml的UI元素就可以直接使用了。
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
User user = new User("yang","hao");
binding.setUser(user);
}
ActivityMainBinding是自动生成的,根据xml文件的名称首字母大写+Binding的名称自动生成。
版权声明:本文为huairenbieku原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。