今年的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<?xml version="1.0" encoding="utf-8"?>                                 

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开发者

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. 好用的 Android(安卓)数据库 DBFlow
  4. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowng
  5. 【Android(安卓)Developers Training】 90. 序言:解决云储存冲突
  6. [android研究联系人之二]联系人Email/Nickname数据操作
  7. Android(安卓)Studio 3.0下Jni开发环境配置
  8. Android开发 华为手机读取相册闪退问题
  9. MediaCodec基本原理及使用

随机推荐

  1. Android Task概念以及相关
  2. Android ClassLoader详解
  3. Android中属性动画和补间动画的区别
  4. 源码分析Android AsyncTask
  5. Android 4.4 在启动到 ANDROID 闪光字的
  6. android 使用 ffmpeg 进行视频转码(二)
  7. Android的http网络请求和发送
  8. android定制系统实现app自启
  9. android 简单推送socket长链接
  10. IKNinePhotoView 是一个开源的 Android