一个简单mvp安卓应用的设计
1.需求设计:
定义一个需求,打开界面的时候访问网络数据,在请求结束之前显示进度条,请求成功后隐藏进度条并显示请求回来的文本,请求失败之后隐藏进度条并显示错误信息
2.代码结构设计
如图所示,整个分为model
,view
和presenter
层,model
执行真正的数据请求操作,其中既包括了网络访问,也包含了数据库的访问,文件操作等.view层主要进行界面的展示操作,里面要做的内容就是操作控件,presenter层主要是对model
层和view
层进行耦合.将二者进行结合.下面以MainActivity
作为入口进行整个框架的介绍.
1.首先我们要明确我们的视图需要进行哪些操作,再根据这些操作定义相应的接口,比如我们这里就需要控制进度条的显示和隐藏,以及显示网络请求的结果,我们定义接口IView
,里面定义几个方法,showLoading()
显示进度条,hideLoading()
隐藏进度条,showText(String text)
显示请求结果内容.
在MainActivity
需要实现IView
接口,然后重写里面的所有:方法,并在方法内部进行相应的界面操作,同时在MainActivity
里面还要新建一个Presenter
对象,将自身传进去,接着调用Presenter
的加载数据的方法,只有调用了加载数据的方法,MainActivity
里面重写的三个方法才能生效
2.刚刚我们用到了Presenter
层的一个类,在代码中我们定义的是DataPresenter
,
DataPresenter
它由一个带参的构造方法以及一个加载数据的方法组成,在loadData()
方法中我们会调用model
层的方法来进行实际的加载数据的动作,这里我们就需要进行model
层的介绍了,model
里面首先会有一个接口ILoadData
,接口定义了一个getData()
方法,方法中会传入一个参数,一般是一个监听器的子类对象(ILoadDataListener
),如果涉及到网络请求操作的话还会传入一个url
地址,这里的ILoadDataListener
ILoadDataListener
接口内部定义了两个方法,一个onSuccess
,一个onFailed()
,主要用来表示获取数据成功还是失败的监听.一般的,在创建完ILoadData
ILoadData
接口之后,我们会创建一个它的实现类ILoadDataImpl
,
在里面重写getData()
方法,然后将网络请求写在里面,demo
中我们使用了retrofit
来进行网络请求在onResponse
()方法内部调用ILoadDataListener
的onSuccess()
方法,在onFailure()
内部调用onFailed()
方法
ILoadDataImpl
3.我们再来梳理一下整个流程,当界面启动的时候,初始化Presenter
对象,接着调用其loadData()
方法,loadData()
中调用ILoadDataImpl
的getData()
方法,传入ILoadDataListener
子类对象,重写onSuccess
和onFailed
方法,在这两个方法中调用IView
接口的相关操作ui的方法,这里面我们总共定义了三个接口,两个是model层的,一个是view层的,分别承担了数据加载,数据监听和界面更新的功能,可见接口定义在mvp
开发框架中的重要性,可以说是框架的框架,因此搭建整个框架的第一步就是梳理出好的接口框架,这样在后面复用性和效率上会大有益处.
demo上传到本人github:https://github.com/yangtao0619/MvpDemo
一个简单mvp安卓应用的设计相关推荐
- php与html网页制作,web 一个简单地三级网页的设计和编写,html+css,适合学习 制作的新手 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
文件名称: web下载 收藏√ [ 5 4 3 2 1 ] 开发工具: HTML 文件大小: 4716 KB 上传时间: 2013-06-25 下载次数: 7 提 供 者: ericc 详细 ...
- 一个简单的监控系统的设计
一个简单的监控系统的设计 # // // 为了实现上级需要一个监控的需求,设计一个小的监控系统,结构如下图. // 虽然是一个比较简单的功能,但是仍然对代码的结构的关系进行了设计,使其具备良好的可扩展 ...
- 数据结构 图定义和实现 根据郑州轻工业大学的校园平面图设计一个简单的校园导航系统,设计数据结构和算法实现相应功能
题目:根据郑州轻工业大学科学校区的校园平面图设计一个简单的校园导航系统,设计数据结构和算法实现相应功能.要求所含景点不少于8个(软件学院为其中一个景点).以图中顶点表示学校内各景点,存放景点的名称.景 ...
- 一个简单的基础通信协议的设计与实现
一个简单的基础通信协议的设计与实现 一种常见的通信协议格式 搭建串口收发环境 配置STM32CubeMX 添加USART部分代码 通信协议的实现 不同设备之间的通信,都需要设计自己的通信协议.为了保证 ...
- 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- android的一个app代码怎么写,编写一个简单的安卓app界面
安卓的用户界面都是由View以及ViewGroup的子类对象组成的.View对象一般是想button或者textview这样的控件,ViewGroup对象是一个看不见的View容器,它定义了如何布局容 ...
- Kotlin实现一个简单的安卓app答题系统(含web服务端)
目录 环境 成果 数据库设计 安卓端设计 演示结果 注意事项 压缩包 (注:本次是学校小学期课程的实验作业,本代码总共由三个人合作完成,也是基于学习其他博客的方式,同时揉和了我们组自己的想法,我在此仅 ...
- 利用茉莉机器人接口开发一个简单的安卓机器人app
一.前言 茉莉机器人与其他机器人相比,主要的优势就是免费,不足之处就是不够智能,很多问题都回答不出来.不过呢,茉莉机器人允许用户自定义问题和问题对应的回答,对个人而言还是挺有用的,你可以利用这一点,记 ...
- 制作一个简单HTML+CSS个人网页设计(web前端大作业)
这是一个电影网页制作,非常简单,非常适合大学生网页制作 html <!doctype html> <html> <head> <meta charset=&q ...
- 一个简单的问卷调查服务端设计
最近遇到个需求需要设计个问卷调查,包括发布问卷.选择题型.提交问卷.统计选择题的选项概率,所以就简单设计了下.(备注:无题库概念) 1.数据库设计 问卷信息表 DROP TABLE IF EXISTS ...
最新文章
- Windows 到 Linux 之旅: 第 8 部分. 备份与恢复
- requests库提示警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate ver
- leetcode 781. Rabbits in Forest | 781. 森林中的兔子(Java)
- 通过 39 个 问答方式快速了解学习 Git
- 一道GCD LCM题目题解
- HDU:4185-Oil Skimming
- Tomcat 配置支持APR
- 从程序员到项目经理(28):该死的结果导向(只看结果,不问过程到底行不行?)...
- EL表达式判断条件要写在${}内
- 7.1 - CRM系统
- OTT网络电视直播APP运营平台-如何保证视频的流畅性
- 2022-2028全球STEAM教育行业调研及趋势分析报告
- 在Virtualbox虚拟机中安装MSDOS(简易教程)
- HDS VSP/VM高端存储更换硬盘
- 8汉化 netreflector_Reflector 8中文版
- ES文件浏览器 WIFI 查看电脑文件怎么弄
- Java向数据库中插入数据出错时怎么避免插入错误数据
- 简图记录-GAMMA技术基础
- 防拷贝加密U盘的功能有些
- OpenCV————鼠标绘制和滑动条
热门文章
- Plus One @python
- 通过反射获取类的完整结构(1)--属性方法
- 怎么是phpadmin连接mysql_phpmyadmin连接远程mysql
- cmd静默运行_exe、msi、dos、bat等静默运行,后台运行,不弹窗的解决办法
- git包名大小写不敏感的百分百管用但是不完美的解决方法
- 两个线性空间的可逆线性映射
- 解析几何 | 吕子根 设三平行平面 $\pi_i:\ Ax+By+Cz+D_i=0\,(i=1,2,3),L,M,N$ 依次是平面 $\pi_1,\pi_2,\pi_3$ 上的任意点,求 $\tria
- arp包导致linux设备丢包,arp包导致的网络拥挤
- 从mysql全备 导入指定数据库的数据:三种考虑方法
- 规划极限编程阅读笔记03