资讯专栏INFORMATION COLUMN

Android中的Data Binding初探 (一)

kamushin233 / 1327人阅读

摘要:数据绑定会根据的名称自动生成类,比如会自动生成一个类,中的方法,会根据中的属性自动生成。如果在或的中,我们需要使用如下方式获取目前对对象没有自动代码提示,只会在编译时进行检查。

今年的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

使用 “@{}” 这样的表达式,绑定类的属性

xml
User类
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初探 (二)

    摘要:本文接中的初探一数据绑定用法语法如果类名相同,可以起别名集合类型使用类静态方法传递数据到绑定表达式语法绑定表达式里的语法,基本上与语言里的相同支持语法不支持语法空指针处理表达式不会抛出空指针异常,对于空指针的访问都返回的是,比如表 本文接《Android中的Data Binding初探 (一)》 数据绑定用法 import语法 xml 如果类名相同,可以起别名...

    MiracleWong 评论0 收藏0
  • Android中的Data Binding初探 (三)

    摘要:本文接中的初探二中的我们可以用任何作为的,但是直接修改对象,不能直接更新。把这些对象绑定到后,当对象更新后,会自动更新。用法中提供了一些支持通知机制的集合类型,比如,。 本文接《Android中的Data Binding初探 (二)》 MVVM中的Model 我们可以用任何POJO作为data binding的Model,但是直接修改POJO对象,不能直接更新UI。 Android...

    NusterCache 评论0 收藏0
  • Android Data Binding代码实战

    摘要:代码实现我根据的顺序介绍代码实现。在中使用这样的表达式将变量进行绑定。中的是根据自动生成的类,如果的名称是,生成的类名称就是。目前只能实现单向绑定,期待以后能支持双向绑定。 本文介绍使用Android Data Binding技术,结合豆瓣电影搜索API,在RecycleView中展示电影列表。 showImg(https://segmentfault.com/img/remote/...

    oliverhuang 评论0 收藏0
  • Data Binding 用户指南(Android

    摘要:未来会有进一步的的支持。避免代码生成时自动检查是否为来避免出现错误。有三种不同的数据变化通知机制对象以及。接口有一个机制来添加和删除监听器,但通知与否由开发人员管理。这是通过指定一个注解给以及内通知来完成的。 注意: 该文不再更新,有问题请转至以下链接 Data Binding(数据绑定)用户指南 1. 介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文...

    BicycleWarrior 评论0 收藏0
  • Android开源架构

    摘要:音乐团队分享数据绑定运行机制分析一个项目搞定所有主流架构单元测试一个项目搞定所有主流架构系列的第二个项目。代码开源,展示了的用法,以及如何使用进行测试,还有用框架对的进行单元测试。 Android 常用三方框架的学习 Android 常用三方框架的学习 likfe/eventbus3-intellij-plugin AS 最新可用 eventbus3 插件,欢迎品尝 简单的 MVP 模...

    hzc 评论0 收藏0

发表评论

0条评论

kamushin233

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<