【移动应用开发技术】详解Android的MVVM框架 - 数据绑定_第1页
【移动应用开发技术】详解Android的MVVM框架 - 数据绑定_第2页
【移动应用开发技术】详解Android的MVVM框架 - 数据绑定_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】详解Android的MVVM框架-数据绑定

本教程是跟着DataBindingGuide学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合。DataBinding解决了AndroidUI编程中的一个痛点,官方原生支持MVVM模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。其实在此之前,已经有些第三方的框架可以支持MVVM模型,无耐由于框架的侵入性太强,导致一直没有流行起来。准备AndroidStudio更新到1.3版本打开Preferences,找到Appearances&Behavior下的Updates选项,把AutomaticallyCheckupdatesfor修改成CanaryChannel。

注意DataBinding是一个support包,因此与AndroidM没什么关系,可以不用下载AndroidMNCPreview的SDK。新建一个Project修改Project的build.gradle,为buildscript添加一条依赖,Gradle版本为1.2.3。为用到DataBinding的模块添加插件,修改对应的build.gradle。注意如果Module用到的buildToolsVersion高于22.0.1,比如23rc1,那com.android.databinding:dataBinder的版本要改为1.3.0-beta1,否则会出现如下错误:

基础工程创建完成后,我们通过一个最简单的例子来说明DataBinding的基本用法。布局文件使用DataBinding之后,xml的布局文件就不再单纯地展示UI元素,还需要定义UI元素用到的变量。所以,它的根节点不再是一个ViewGroup,而是变成了layout,并且新增了一个节点data。要实现MVVM的ViewModel就需要把数据与UI进行绑定,data节点就为此提供了一个桥梁,我们先在data中声明一个variable,这个变量会为UI元素提供数据(例如TextView的android:text),然后在Java代码中把”后台”数据与这个variable进行绑定。如果要用一个表格来展示用户的基本信息,用DataBinding应该怎么实现呢?数据对象添加一个POJO类-User,非常简单,四个属性以及他们的getter和setter。稍后,我们会新建一个User类型的变量,然后把它跟布局文件中声明的变量进行绑定。定义Variable再回到布局文件,在data节点中声明一个变量user。其中type属性就是我们在Java文件中定义的User类。当然,data节点也支持import,所以上面的代码可以换一种形式来写。然后我们刚才在build.gradle中添加的那个插件-com.android.databinding会根据xml文件的名称Generate一个继承自ViewDataBinding的类。例如,这里xml的文件名叫activity_basic.xml,那么生成的类就是ActivityBasicBinding。注意java.lang.*包中的类会被自动导入,可以直接使用,例如要定义一个String类型的变量:绑定Variable修改BasicActivity的onCreate方法,用DatabindingUtil.setContentView()来替换掉setContentView(),然后创建一个user对象,通过binding.setUser(user)与variable进行绑定。注意ActivityBasicBinding类是自动生成的,所有的set方法也是根据variable名称生成的。例如,我们定义了两个变量。那么就会生成对应的两个set方法。使用Variable数据与Variable绑定之后,xml的UI元素就可以直接使用了。至此,一个简单的数据绑定就完成了,可参考完整代码高级用法使用类方法首先为类添加一个静态方法然后在xml的data节点中导入:使用方法与Java语法一样:类型别名如果我们在data节点了导入了两个同名的类怎么办?这样一来出现了两个User类,那user变量要用哪一个呢?不用担心,import还有一个alias属性。NullCoalescing

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论