摘要:数据绑定会根据的名称自动生成类,比如会自动生成一个类,中的方法,会根据中的属性自动生成。如果在或的中,我们需要使用如下方式获取目前对对象没有自动代码提示,只会在编译时进行检查。
今年的Google IO大会,给Andorid开发者带来了很多新东西,比如新的Material Design支持库,还有Data Binding技术,使用Data Binding,我们可以很方便的实现 MVVM设计模式。
MVVM设计模式MVVM,即Model-View-ViewModel,Model提供数据,View负责显示,ViewModel跟Model和View进行双向绑定;当View有用户输入后,ViewModel通知Model更新数据,同理Model数据更新后,
ViewModel通知View更新。
开发环境准备此图出自 [Web开发的MVVM模式](http://www.cnblogs.com/dxy1982/p/3793895.html)
目前Data Binding还只在Android Studio 1.3 测试版中支持,
我们可以修改Android Studio的Update Channel为Canary Channel,然后点击“Check Now”更新到最新测试版
如图:
设置编译环境Android Studio的下载和更新请自备梯子
新建一个Android Studio项目
在项目根目录的 build.gradle中修改dependencies
groovydependencies { classpath "com.android.tools.build:gradle:1.3.0-beta2" classpath "com.android.databinding:dataBinder:1.0-rc0" }
最近gradle升级了,需要修改为1.3.0-beta2
在App Module的 build.gradle中加入databinding支持
groovyapply plugin: ‘com.android.application" apply plugin: "com.android.databinding"
然后慢慢等待插件下载完成~~~
使用Data Binding View绑定表达式使用Data Binding 的Layout与传统的稍微有点不同,我们必须使用作为最外层的布局,
Layout中还包含一个区域,用于指定需要绑定到这个Layout的类。
xml
Data中的variable指定了需要绑定的类
xml
使用 “@{}” 这样的表达式,绑定类的属性
xmlUser类
javapublic 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() 方法,这与Web开发中模板文件访问POJO类类似。
数据绑定Android Studio会根据Layout的名称自动生成ViewModel类,
比如activity_main.xml会自动生成一个ActivityMainBinding类,
ActivityMainBinding中的方法,会根据layout中的属性自动生成。
比如我们在layout中指定了user变量,* ActivityMainBinding*类中会自动生成setUser方法
下面我们Activity的OnCreate方法中进行数据绑定
java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User("Test", "User"); binding.setUser(user); }
好了,以上我们就完成了第一个Data Binding程序,运行代码应该显示User的firstName和lastName了。
如果在ListView或RecyclerView的Adapter中,我们需要使用如下方式获取binding
javaListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
PS: Android Studio目前对binding对象没有自动代码提示,只会在编译时进行检查。
本文参考谷歌官方的Data Binding Guide
本文作者: 阳春面
原文地址:http://www.aswifter.com/2015/07/04/android-data-binding-1/
欢迎关注我的微信公众号,分享Android 开发,IOS开发,Swift开发和互联网内容
微信号:APP开发者
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/12293.html
摘要:本文接中的初探一数据绑定用法语法如果类名相同,可以起别名集合类型使用类静态方法传递数据到绑定表达式语法绑定表达式里的语法,基本上与语言里的相同支持语法不支持语法空指针处理表达式不会抛出空指针异常,对于空指针的访问都返回的是,比如表 本文接《Android中的Data Binding初探 (一)》 数据绑定用法 import语法 xml 如果类名相同,可以起别名...
摘要:本文接中的初探二中的我们可以用任何作为的,但是直接修改对象,不能直接更新。把这些对象绑定到后,当对象更新后,会自动更新。用法中提供了一些支持通知机制的集合类型,比如,。 本文接《Android中的Data Binding初探 (二)》 MVVM中的Model 我们可以用任何POJO作为data binding的Model,但是直接修改POJO对象,不能直接更新UI。 Android...
摘要:代码实现我根据的顺序介绍代码实现。在中使用这样的表达式将变量进行绑定。中的是根据自动生成的类,如果的名称是,生成的类名称就是。目前只能实现单向绑定,期待以后能支持双向绑定。 本文介绍使用Android Data Binding技术,结合豆瓣电影搜索API,在RecycleView中展示电影列表。 showImg(https://segmentfault.com/img/remote/...
摘要:未来会有进一步的的支持。避免代码生成时自动检查是否为来避免出现错误。有三种不同的数据变化通知机制对象以及。接口有一个机制来添加和删除监听器,但通知与否由开发人员管理。这是通过指定一个注解给以及内通知来完成的。 注意: 该文不再更新,有问题请转至以下链接 Data Binding(数据绑定)用户指南 1. 介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文...
摘要:音乐团队分享数据绑定运行机制分析一个项目搞定所有主流架构单元测试一个项目搞定所有主流架构系列的第二个项目。代码开源,展示了的用法,以及如何使用进行测试,还有用框架对的进行单元测试。 Android 常用三方框架的学习 Android 常用三方框架的学习 likfe/eventbus3-intellij-plugin AS 最新可用 eventbus3 插件,欢迎品尝 简单的 MVP 模...
阅读 1231·2021-11-24 09:39
阅读 1912·2021-11-18 10:02
阅读 2743·2021-11-16 11:44
阅读 3322·2021-11-15 11:36
阅读 813·2021-09-28 09:34
阅读 988·2019-08-30 14:03
阅读 574·2019-08-30 11:08
阅读 2658·2019-08-29 13:20