您的位置:首页 > 其它

Data Binding的初识

2016-06-17 11:44 197 查看

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的名称自动生成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: