热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

android架构设计,Android框架设计之MVVM

一、简介1、定义MVVM模式(Model--View--ViewModel模式)Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。Vie

一、简介

1、定义

MVVM 模式(Model--View--ViewModel 模式)

Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。

View:视图层,对应于Activity,XML,View,负责界面数据的展示,与用户进行交互。与MVP中的V一样。

ViewModel:视图模型,负责完成View于Model间的绑定和交互,Model或者View更改时,实时刷新对方,负责业务逻辑。

2、详情

和 MVP 模式相比,MVVM 模式用ViewModel 替换了 Presenter ,其他层基本上与 MVP 模式一致,ViewModel 可以理解成是 View 的数据模型和 Presenter 的合体。

MVVM 采用双向绑定(data-binding):View 的变动,自动反映在 ViewModel,反之亦然,

这种模式实际上是框架替应用开发者做了一些工作(相当于 ViewModel 类是由库帮我们生

成的),开发者只需要较少的代码就能实现比较复杂的交互。

3、各模块关系

}else{

listener.onFailed("${userName}登录失败")

}

}

//回调接口

interface ModelCallBack{

fun onSuccess(msg:String)

fun onFailed(msg:String)

}

}

View层

将根布局修改为layout,加入 Data Binding。

注意:class名为xml名去掉_后的驼峰写法,即此xml为activity_main.xml,则其类名则需要为ActivityMainBinding。两者名字必须是这个规则的写法,否则在View层进行xml绑定时会显示找不到xml文件

xmlns:app="http://schemas.android.com/apk/res-auto">

name="userViewModel"

type="yzl.swu.mvvm.viewModel.UserViewModel" />

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@={userViewModel.userName}"

android:textSize="50sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.35" />

android:id="@+id/loginBtn"

android:layout_width="100dp"

android:layout_height="50dp"

android:layout_marginTop="30dp"

android:text="登录"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.5"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView"

android:onClick="@{userViewModel.loginUser}"/>

build一下生成需要的类

var cpro_id = "u6885494";

推荐阅读
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 云屏系统基于嵌入式微系统msOS,旨在解决当前嵌入式彩屏GUI编程中硬件要求高、软件开发复杂、界面效果不佳等问题。该系统通过结合MCU和Android技术,利用Html5+JavaScript实现高效、易用的图形用户界面开发,使嵌入式开发人员能够专注于业务逻辑。 ... [详细]
  • 三星Galaxy S8/S8+即将登场,全面解析新旗舰
    3月29日晚11点,备受瞩目的三星Galaxy S8/S8+将正式发布。作为三星在Note 7爆炸事件后的重磅产品,S8/S8+不仅承载着恢复消费者信心的重任,其创新的设计和技术也备受期待。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
author-avatar
qin2112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有