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 ...
随机推荐
- Geodatabase - 打开要素类
string dbPath = @"G:\doc\gis\1.400\data\pdb.mdb"; ESRI.ArcGIS.Geodatabase.IWorkspaceFactor ...
- Windows下使用ODBC API访问数据库之关键
本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库. 1.SQL安装和环境配置 这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功. 注意的关键点: SA账号配 ...
- eclipse安装egit上传和clone项目到github
一.eclipse安装egit插件 help->new install new software->add location输入http://download.eclipse.org/ ...
- EMCA常用命令 【weber整理必出精品】
EMCA常用命令 创建一个EM资料库 emca -repos create 重建一个EM资料库 emca -repos recreate 删除一个EM资料库 emca -repos drop 配置数据 ...
- Linux中的常见配置文件
网络服务端口 /etc/services
- C++中的函数指针用法
代码: #include <iostream> #include <cstdio> typedef void (*FUN)(); using namespace std; vo ...
- Bootstrap定制(一)less入门及编译
第一篇博,希望支持. 近期在开发一个项目,项目前端定位于bootstrap,遂花了少许时间研究了bootstrap,将其整理整理,与众人共享. bootstrap官方的定制,功能还算完善,但是基于we ...
- tableView点击后取消选中效果
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; @impo ...
- Virtual Box 工具栏(菜单栏)消失的解决方法
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 现在Virtual Box非常牛逼(不排除Oracle又准备像Java SE那样 ...
- CoreData学习-最好的一片文章
CoreData学习-最好的一片文章 分类: IOS重新上路2014-05-25 18:00 1937人阅读 评论(0) 收藏 举报 目录(?)[+] 写的很好的一篇教程,我什么时候能写出这么 ...