MVVM的最大缺点貌似是,报错后不好找,
在安卓6.0的时候出现了一个工具叫做databinding,其中呢主要是用来帮助实现MVVM模式的快速开发
 
在使用databinding的时候我们需要做的工作有一下几点:
(仅支持studio,eclipse想使用MVVM手写去吧)
在使用databinding的时候我们需要做的工作有一下几点:
(仅支持studio,eclipse想使用MVVM手写去吧)
首先要下载需要的包
1.在SDKMannager中下载

 
2.配置支持包
第一种方式:在整个项目中的build.gradle配置(2.0 之前的 Android Studio)
依赖 DataBinder 这个库

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0'
    classpath 'com.android.databinding:dataBinder:1.0-rc0'//加入这句话
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
 
 
然后再在使用的 module中最上边(文件) 配置
apply plugin: 'com.android.databinding'
-------------------------------------华丽的分割线---------------------------------------
经测试,这种本人测试失败,报错如下,不知道是否是跟版本有关系,我的猜测来自下边知乎网友的回答
重点报错:如果是2.0之后的studio使用的以上的配置
原因分析:
知乎用户 Android/C++/Lua/Python/杂七杂八
于 2015.12.15 更新:
最近 Android Studio 升级到了 2.0 版本,发现不需要从 jcenter 中再依赖 DataBinder 这个库了,2.0 之后的 Android Studio 版本内置就支持了 DataBiding,也不需要在 build.gradle 中添加 com.android.databinding 这个 Plugin 了。使用方式如下:
1、在 Project 的 build.gradle 配置中,使用 1.5.0 以上的 Gradle 版本;
2、在使用 DataBinding 的 Module 中,如下配置:

android {
    ....
    dataBinding {
        enabled = true
    }}
详细信息请关注官方开发者论坛,里面会随时更新:
------------------------华丽的分割线---------------------------------------
 
第二种:在module中配置(推荐studio 2.0以后的使用这种)
在需要使用的module中android下配置
dataBinding{
    enabled=true
}
 
 
 
使用方式如下:
布局文件:
main布局文件
<layout xmlns:android="http://schemas.android.com/apk/res/android"
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>

 
===========华丽的分割线========================
引用的布局文件my_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>

 
------==============华丽的分割线=====================------------
activity的java中
import android.databinding.DataBindingUtil;
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层
    }

}
++++++++++++++++++华丽的分割线++++++++++++++++++++++++++++++++++++
javabean只是对User进行了简单的封装
public class User {
     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;
    }

}
 
***************使用心得及吐槽****************************
 
 
在使用的过程中报错很多不知道原因,其中有,以及刚才上边说的,控制控件显示不顶用,获取输入字符监听无效,以及最后的R包也出现了不知名的问题,
(com.example.lizhanqi.mvvmdemo.的R包,纠结了(最后找了下分包问题,日了动物园了))
总共这点小东西报错差不多有十种了,因此如果咋项目中使用,以后有的受了
身心疲惫,学习历程没见过这么费劲的玩意,放弃了学H5去了
(效果现在不敢保证了,中间效果出来过,就两个简单的显是姓名,以及性别)
 
 

MVVM模式的更多相关文章

  1. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  2. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  3. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  4. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  5. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  6. [转载]MVVM模式原理分析及实践

    没有找到很好的MVVM模式介绍文章,简单找了一篇,分享一下.MVVM实现了UI\UE设计师(Expression Blend 4设计界面)和软件工程师的合理分工,在SilverLight.WPF.Wi ...

  7. dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...

  8. mvc mvp mvvm模式的区别

    mvc模式中,Model不依赖于View,但是View是依赖于Model的,m和v没有进行完全的分离,三者之间是单向的操作 mvp模式中,m和v之间的交互是双向的,m和v完全分离,m和v的交互是通过P ...

  9. 转:界面之下:还原真实的 MVC、MVP、MVVM 模式

    前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...

  10. 由项目浅谈JS中MVVM模式

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.    背景 最近项目原因使用了durandal.js和knock ...

随机推荐

  1. onblur判断数字

    window.onload = function () { document.getElementById('text1').onblur = function () { if (isNaN(docu ...

  2. 数据库分库分表(sharding)系列(二) 全局主键生成策略

    本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请参考该系列的前一篇文章:数据库分库分表( ...

  3. String类的使用说明

    (1)Length()取一个字符串的长度:public int length(); public calss StringLength1{ public static void main(String ...

  4. OpenCV——级联分类器(CascadeClassifier)

    级联分类器的计算特征值的基础类FeatureEvaluator 功能:读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗口的操作setImage.setWindo ...

  5. Opensuse13.2开启ssh

    要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...

  6. 黑马程序员——读取Plist文件

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 读取Plist文件     一:新建一个plist文件,并将plist文件数据填入plist文件中,这里pli ...

  7. Oracle字符函数(转换大小写,替换等)

    在oracle中,有一些字符函数: upper(字符串):转换为大写lower(字符串):转换为小写initcap(字符串):首字母大写replace(字符串1,字符串2,字符串3):将串1中所有的串 ...

  8. Resharper上手指南

    原文http://www.cnblogs.com/renji/archive/2007/12/11/resharper.html Resharper上手指南 我是visual studio的忠实用户, ...

  9. hihoCoder 1116 计算 (线段树)

    题意 : 描述 现在有一个有n个元素的数组a1, a2, ..., an. 记f(i, j) = ai * ai+1 * ... * aj. 初始时,a1 = a2 = ... = an = 0,每次 ...

  10. Android学习笔记__1__Android体系架构

    Android 体系结构图 Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application).根据Android的软件 ...