new Material Design 支持哭
还有 Data Binding 结束
 
使用DataBindign 结束 我们很方面的实现 MVVM设计模式
 
什么是MVVM model 呢、
 
MVVM 是 Model - View - ViewModel 的简称
View 负责显示,ViewModel 跟Model 和view 进行双向绑定;当View 有用户输入后,ViewModel 通知Model 更新数据,同时处理Model 数据更新后,ViewModel 通知View更新
也就是说View的负责内容是 显示 ,ViewModel就是一个中间组件 ,它的功能是的 进行双向绑定的 。
当用户输入内容后,其实View在获取用户的数据,ViewModel通知Model更新数据,是通过View拿到的数据后,进行的操作,执行通知的作用,同时处理Model数据更新后,它还做了通知View进行更新。
所以在这个
ViewModel做了两个操作,一是及时获取View获取的数据,拿到数据后,通知Model 进行数据的更新操作,同时得到Model反馈后进行View界面的通知,通知刷新Model新数据返回的内容。
 
View (显示数据,发送用户 输入的 ViewModel)
 
ViewModel 根据用户输入处理Model ,相应Model变化事件,发送ViewModel变化时间 ,等待用户输入的 Command,通知View 进行更新
Model 被修改 ,通知ViewModel 进行更新 承训数据 Data发送数据Data变化时间
DataBingding 只在 AndroidStudio 1,3测试版本中支持,我们可以修改 Andrdoi Studio 的Update Channel 为Canary Channel 然后点击 “Check Now ”更新到最新测试版
 
Updates 控件,
Automatically check updates fro Canary Channel
Canary -> 翻译为 金丝雀 ,淡黄色
 
项目目录 :
build.gradle 中修改 dependencies --- 》 build .gradel 是 模块的 gradle 编译文件
第一步修改 ——》》》
-- 修改 build.gradle 中修改 dependencies --(翻译为:依赖性,相关性:dependencies)
dependencies{
classpath "com.android.tools.build:gradle:1.3.0 - bata2"
claspatch:"com.android.databinding:dataBinder:1.0 -rc0"
}
如果gradle 升级啦,需要修改 模块的 gradle编辑文件 build.gradle 修改为 比如数 1.3.0-beta2
第二步骤----》》》
在 App Mudule 的build.gradle 编译文件中加入databinding 支持
apply plugin: ‘com.android.application’
apply plugin:'com.android databinding'
 
然后进行等待插件下载...
使用Data Binding
View 端这边进行绑定的表达式
使用Data Binding 的Layout 与传统的稍微有点不同,我们必须使用作为最外层的布局。
Layout 中还包含一个区域,用于置顶需要绑定到这个 Layout的类
<?xml version = "1.0" encoding="utf-8">
<layout xmlns:android="http://schemes.android.com/apk/res/android">
<data>
<variable name ="user" type ="com.example.User"/>
</data>
<LinearLayout
android:orientation = "vertical"
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>
</layout>
 
其中Data中的variable 指定了需要绑定的类
<variable name -"user" type ="com.aswifter.databingding.model.User"/>
使用"@{}"这样的表达式,绑定类的属性
<TextView android:layout_width ="wrap_content"
android :layout_height ="wrap_content"
android:text ="@{user.firstName}"/>
 
@{user.firstName }它会自动调用 ViewModel中的方法getFirstName()方法。进行调用 它需要的中间件是 ActivityMainBinding中去找方法
 
 
-- 定义个类
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 this.firstName;
}
public String getLastName(){
return this.lastName;
}
}
 
@{user.firstName}会访问到User类的 getFirstName()方法,这个与Web开发中模版文件访问POJO类 类视
 
也就是说 Web开发中 模版文件 需要访问 POJO
什么是 POJO呢 ?
什么是模版文件呢?
数据绑定
Android studio 会根据 Layout的名称自动生成一个 ViewModel类
比如 activity_main.xml会自动生成一个 ActivityMainBinding类
ActivityMainBinding中的方法,会根据layout中属性自动生成
ex,我们在layout中置顶了user变量,ActivityMainBinding类中会自动生成setUser()方法

MVVM技术 - 的实现 @{}来进行 调用那个 DataBinding方法的更多相关文章

  1. WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理

    原文:WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 在前面一片文章(服务代理不能得到及时关闭会有什么后果?)中,我们谈到及时关闭服务代理(Service Proxy)在一个高并发环境 ...

  2. C# 通过Get、Post、Soap调用WebService的方法

    实现代码来源于网络,我只是作了一些修改! using System; using System.Web; using System.Xml; using System.Collections; usi ...

  3. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. 在ASP中调用DLL的方法

    .net的dll已经不是严格意义上的动态连接库了,而是一个类或者类库.它是不能直接在ASP.VB等其它的应用环境中使用的.   我们可以通过COM包装器(COM callable wrapper (C ...

  5. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  6. C# 直接调用非托管代码的方法

    C# 代码有以下两种可以直接调用非托管代码的方法: 直接调用从 DLL 导出的函数. 调用 COM 对象上的接口方法. 对于这两种技术,都必须向 C# 编译器提供非托管函数的声明,并且还可能需要向 C ...

  7. js调用php和php调用js的方法举例

    js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...

  8. c# 调用c++DLL方法及注意事项

    引用命名空间 using System.Runtime.InteropServices 调用方法: 一.静态加载 用DllImprot方式来加载c++DLL.如下格式: //对应c++方法 //voi ...

  9. JavaScript调用函数的方法

    摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...

随机推荐

  1. numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)

    matlab是标准的,numpy相当于转置后计算 >> x = [2,0,-1.4;2.2,0.2,-1.5;2.4,0.1,-1;1.9,0,-1.2] x = 2.0000    0 ...

  2. Dialog 基本使用

    1   :  效果图 btnGeneral.setOnClickListener(new View.OnClickListener() { @Override public void onClick( ...

  3. 《Spring实战》系列之Bean的装配-Days02

    2.1 回顾 对于我第一天在bean的装配中写的,是一些基本的语法或者是Spring本身的一些规定,但是我没有对此进行深究.接下来就让我们仔细的讨论一下细节问题.和传统的类的定义和方法的调用做一些比较 ...

  4. 详解MYSQL各种优化原理

    说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原 ...

  5. 项目中gulp使用发生的错误及解决

    在项目开发中,执行gulp css来生成合成的css文件时,报如下错误 Error: Cannot find module 'browserslist' 解决方法: npm install brows ...

  6. C#使用Json.NET解析Json

    本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据,我简单上网搜索了一下,基本上有两种操作 Json ...

  7. 【service调用dao层传参的三种方式】

    第一种方案:默认数组角标: service Public User selectUser(String name,String area); mapper: <select id="s ...

  8. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性介绍(2)- RT685EVKA性能实测(Dhrystone)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的性能. 在前面的文章 i.MXRTxxx微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2018 ...

  9. AIM Tech Round 5 (rated, Div. 1 + Div. 2) D(SET,思维)

    #include<bits/stdc++.h>using namespace std;const long long mod = 1e9+7;char s[370007][27];long ...

  10. Unity 着色器训练营(2) - MVP转换和法线贴图

    https://mp.weixin.qq.com/s/Qf4qT15s9bWjbVGh7H32lw 我们刚刚公布了Unity 2018.1中,Unity将会内置可视化编程工具Shader Graph, ...