MVVM模式
.png)
.png)
// in the individual module build.gradle files
android {
....
dataBinding {
enabled = trueenabled=true
}
.png)
xmlns:bind="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--当前数据来源-->
<data>
<!--variable变量这里的数据由ActivityMainBinding的setXXX传入的
name相当于是在这个xml文件中使用时候的对象名也是new出后的对象名,
这里的name与ActivityMainBinding的setXXX中使用的是相同的,相当于接收参数的对象名
type指的是什么样的类型对象,相当于用来接收参数类型-->
<variable
name="user"
type="com.example.lizhanqi.mvvmdemo.bean.User" />
</data>
<!--往下是正常的布局-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--引用时候的不同点:这里设置text与以往不同android:text="@{bean.phone}"
这里{}中的bean来自上边定义的数据对象名称
-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
<!--引用布局,其中需要传入数据
bind:myuser="@{user}
bind是文件头部自定义的命名空间
myuser是引用布局的对象,
@{user} 是传入的数据对象
-->
<include
layout="@layout/my_layout"
bind:myuser="@{user}" />
<!--他妈蛋的MVVM就是个垃圾货色,没必要研究了addTextChangedListener使用不了报错,
设置控件的显示也完蛋报错,android:visibility="@{user.isshow ? View.VISIBLE : View.GONE}"
教程没问题,偏偏我这里就不行,MVVM据说还他妈的是后期报错维护难,
果断舍弃,浪费生命
-->
<!-- <EditText
android:addTextChangedListener="@{user.address}"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.address}" />-->
</LinearLayout>
</layout>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--当前数据来源-->
<data>
<!--variable变量,这里的数据是由引用者传入数据
name相当于是在这个xml文件中使用时候的对象名也是new出后的对象名,
这里的name与ActivityMainBinding的setXXX中使用的是相同的,相当于接收参数的对象名
type指的是什么样的类型对象,相当于用来接收参数类型-->
<variable
name="myuser"
type="com.example.lizhanqi.mvvmdemo.bean.User"/>
</data>
<!--往下是正常的布局-->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--引用时候的不同点:这里设置text与以往不同android:text="@{bean.phone}"
这里{}中的bean来自上边定义的数据对象名称
-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{myuser.sex}" />
</LinearLayout>
</layout>
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.example.lizhanqi.mvvmdemo.bean.User;
import com.example.lizhanqi.mvvmdemo.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置界面 设置界面不在使用activity提供的,
//setContentView(R.layout.activity_main);
//使用的是 DataBindingUtil的setContentView(Activity activity, int layoutId) ;
//返回使用的是ActivityMainBinding不是提醒器的ViewDataBinding
ActivityMainBinding viewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);//绑定view层
//初始化实力module
User user = new User();
user.setName("lizhanqi");
user.setSex("男");
user.setAge("21");
//这里的setXXX是来自你定义在xml文件引用的对象名
viewDataBinding.setUser(user);//绑定module层
}
String name;
String sex;
String age;
String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
MVVM模式的更多相关文章
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
- MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信
MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式和在WPF中的实现(二)数据绑定
MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- [转载]MVVM模式原理分析及实践
没有找到很好的MVVM模式介绍文章,简单找了一篇,分享一下.MVVM实现了UI\UE设计师(Expression Blend 4设计界面)和软件工程师的合理分工,在SilverLight.WPF.Wi ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- mvc mvp mvvm模式的区别
mvc模式中,Model不依赖于View,但是View是依赖于Model的,m和v没有进行完全的分离,三者之间是单向的操作 mvp模式中,m和v之间的交互是双向的,m和v完全分离,m和v的交互是通过P ...
- 转:界面之下:还原真实的 MVC、MVP、MVVM 模式
前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...
- 由项目浅谈JS中MVVM模式
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 背景 最近项目原因使用了durandal.js和knock ...
随机推荐
- How to resolve the SQL error “cannot connect to WMI provider”
当你试图打开SQL Server Configuation Manager时发现如下错误: “cannot connect to WMI provider. You do not have permi ...
- Oracle System密码忘记 密码修改、删除账号锁定lock
一下转自http://www.cnblogs.com/yjhrem/articles/2340149.html 运行cmd命令行 录入 sqlplus /nolog 无用户名登录 conn /as ...
- C# 几十万级数据导出Excel,及Excel各种操作
先上导出代码 /// <summary> /// 导出速度最快 /// </summary> /// <param name="list">&l ...
- OpenGL ES 2.0 限定符
限定符 说明 作用 attribute 一般用于各个顶点各不相同的量,如顶点位置.颜色等 属性限定符,修饰的变量用来接收渲染管线传递进顶点着色器的当前顶点的各种属性值. 只能用来修饰符点数标量,浮点数 ...
- redis的特色
总结一下redis的特点: 1.独特的键值对模型 很多数据库只能处理一种数据结构: • SQL 数据库 —— 表格 • Memcached —— 键值对数据库,键和值都是字符串 ...
- Injector Job深入分析
Injector Job的主要功能是根据crawlId在hbase中创建一个表,将将文本中的seed注入表中. (一)命令执行 1.运行命令 [jediael@master local]$ bin/n ...
- js学习(一)
在javascript中,哪些值能作为if的条件呢? 1.布尔变量true/false 2.数字 非0数值为true, 0 或NaN为false. 3.对象 对象为null或undefined为fal ...
- Onthink学习随笔
-------------------------------------(写代码不孤独_小小代) 用Onthink写了一个网站暂时还没上线功能略显不全没,完全没有发挥出应有的强大拓展之处,各种地方略 ...
- 分享到QQ空间、新浪微博、腾讯微博的代码!
给网页加上分享代码,借助网友的力量推广网站,目前已经很流行了 以下是网页代码 QQ空间分享代码如下: <a href="javascript:void(0);" onclic ...
- vim 多行注释
多行注释: 1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 2. 按大写字母I,再插入注释符,例如// 3. 按esc键 ...