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的名称自动生成。
相关文章推荐
- 补———实验二
- 安卓错误提示Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead的解决方法
- JSON: Property 'xxx' has no getter method的解决办法
- MiniUI支持ASP.NET MVC
- 输入输出参数inout
- gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行
- 手把手教你Android手机与BLE终端通信--搜索
- Mongo访问远程数据库
- AD域帐号被锁问题排查
- 十二.filter
- sysbench测试服务器性能
- eclipse打包apk
- 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
- MFC List Control 控件添加单元格编辑和单元格下拉列表项
- 小Y的绝对战争
- 第一人称视角漫游(unity + 暴风魔镜)
- 智能家居原理
- 最大公约数
- LeetCode 360. Sort Transformed Array(计算函数)
- linux 为 逻辑卷管理 增加磁盘空间