MVP小白入门,只需5步
前言:因为公司氛围没有用,一直很火的mvp模式像鬼一样听说过没见过,今天闲来无事了解一下,发现由普通的MVC改起来还是挺行云流水的,但像有些弹窗不知道写在P层还是V层
关于MVP的概念我就不详细说了,记住关键的一点就是将view与逻辑分离
在谷歌推荐写法下,M层被弱化,数据处理放在了P层
1.定义一个P接口
public interface BasePresenter {boolean something();
}
2.定义一个V接口
public interface BaseView<P extends BasePresenter> {void setPresenter(P presenter);
}
3.定义一个合约类管理上述两个接口,Presenter用于定义界面的逻辑与数据,View 用于定义对应的界面显示
public class DateRecordContract {interface Presenter extends BasePresenter {//获取今日数据void getTodayData();//获取所有数据void getAllData();//检查数据是否有效void checkData();//插入一条数据void insertDateBean();//开始计时void startTiming();}interface View extends BaseView<Presenter> {//显示计时界面void startAnim();//刷新界面void refreshUI(List<DateRecordBean> data);//停止计时界面void stopAnim();//刷新一个界面void refreshOneDate(DateRecordBean bean);//保存输入的文本void saveInputtext(String str);//获得当前的文本String getCurrenttext();//隐藏输入法void hideInput();}}
4.定义一个P层实现类,最好放在上面的接口同一个包下
public class DateRecordPresenterImpl implements DateRecordContract.Presenter {private DateRecordContract.View view;private SharedPreferencesHelper spHelper;public DateRecordPresenterImpl(DateRecordContract.View view,SharedPreferencesHelper sp) {this.view = view;view.setPresenter(this);spHelper = sp;}@Overridepublic void getTodayData() {//..处理数据List<DateRecordBean> list = ...;//..通知view刷新界面view.refreshUI(list);}@Overridepublic void getAllData() {List<DateRecordBean> list = ...;//view.refreshUI(list);}@Overridepublic void checkData() {}@Overridepublic void insertDateBean() {long endTime = System.currentTimeMillis();DateRecordBean bean = new DateRecordBean();//..数据处理//处理完数据后通知view刷新界面view.refreshOneDate(bean);}@Overridepublic void startTiming() {view.hideInput();view.startAnim();spHelper.put(SharedPreferencesHelper.isStartTime, true);view.saveInputtext(str);}@Overridepublic boolean something() {//...自己的处理逻辑return isStartRecord;}
}
5.定义一个View实现类,根据回调显示UI
public class MainActivity extends AppCompatActivity implements DateRecordContract.View {
private DateRecordPresenterImpl presenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);presenter = new DateRecordPresenterImpl(this,spHelper);//通知P层获得今日数据presenter.getTodayData();}@Overridepublic void refreshUI(List<DateRecordBean> data) {//显示P层处理好的数据dapter.addBeans(data);}
}
以上就是简单的MVP入门,哪里出问题了直接在合约类查看,还是挺方便,也可以把MainActivity改为Fragment实现View,有些疑问是不知道把Dialog放在哪,目前还是放在了Activity中
2018年9月5日08:02:16
MVP小白入门,只需5步相关推荐
- dll路径 unity3d_利用Unity3D 打包dll工具箱,只需一步~
在本文,笔者将演示如何利用Unity打包自己的Dll工具集,入门只需一步~ 背景 网络上打包Dll的教程多如繁花,殊不知Unity定义一个AssemblyDefinition文件,dll工具集就躺在那 ...
- 计算机电池电源转换,图吧小白教程 篇七十七:只需一步,延长MACBOOK电池寿命(硬改电源)...
图吧小白教程 篇七十七:只需一步,延长MACBOOK电池寿命(硬改电源) 2020-04-17 11:42:40 6点赞 24收藏 4评论 创作立场声明:看来就算到了最后这世界上也只是有IBM兼容机和 ...
- 如何将瀑布流里的图片加链接_只需5步!魔幻丛林瀑布后期揭秘
去年的旅行,我跋山涉水,翻山越岭,探索了很多的幽谷密林. "海蓝时见鲸,林深处遇水"我记录下了很多瀑布的影像. 下面是一组后期处理前后的对比图 如何将原本干涩直白的画风打造出如梦游 ...
- 新工具上线!只需2步助你轻松学爬虫!
作者简介:张老师,学习计算机十余年,在信息安全.生物信息学.会计.平面设计.编辑出版等多个领域也均有涉猎,热爱钻研.热爱考证.热爱生活. 你还在为Python爬虫入门发愁么? 你还在构建request ...
- 只需两步快速获取微信小程序源码
第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两 ...
- 只需几步,用Python3实现属于自己的搜索引擎
只需几步,用Python3实现属于自己的搜索引擎 打开浏览器,输入google.com,就能成功进入世界上最大的搜索引擎--谷歌搜索.不过,你是否想过,自己写一个搜索引擎呢?本篇教程,就是用来帮助你制 ...
- 只需两步获取任何小程序源码
这种方法,并不能反编译出所有的小程序源码,请自知! 具体的局限请看:qwerty472123大神的md文件 https://github.com/qwerty472123/wxappUnpacker ...
- html写的代码投屏到LED屏,LED大屏无线投屏器,只需一步,轻松实现笔记本电脑投屏显示...
原标题:LED大屏无线投屏器,只需一步,轻松实现笔记本电脑投屏显示 笔记本电脑不用接HDMI线,也不用接音频线,能将笔记本的画面和声音投屏在LED大屏上显示吗?当然可以,您没有看错,而且操作非常方便快 ...
- 只需3步,快来用AI预测你爱的球队下一场能赢吗?
摘要:作为球迷,我们有时候希望自己拥有预测未来的能力. 本文分享自华为云社区<用 AI 预测球赛结果只需三步,看看你爱的球队下一场能赢吗?>,作者:HWCloudAI. 还记得今年夏天的欧 ...
最新文章
- OpenCV 4.2.0 发布,Intel 开源的计算机视觉库
- offsetTop,offsetHeight,scrollHeight,scrollTop的区别
- BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游(LCT,泰勒展开,二项式定理)
- 单纯形法求最小值的检验数_【运筹学】单纯形法(笔记和思考)
- 官网mysql安装目录_官网下载MySQL 并安装
- JavaScript---DOM元素
- 【GStreamer开发】GStreamer基础教程07——多线程和Pad的有效性
- 深度评测阿里云、百度云、腾讯云和华为云
- 学习HttpClient,从两个小例子开始
- Eclipse 真机调试检测不到手机解决方案
- mac软件意外退出怎么解决_Mac 软件常见问题解决方法汇总
- 技术支持好跳槽吗_计算机实施、IT技术支持、技术顾问、成功客户经理岗位怎么样?...
- 前端系列教程之JS(自认为有用代码)
- obs 推流编码在哪设置_直播工具OBS推流配置操作指引
- excel对比两列不同
- 数据库字段数据(昵称)排序,规则: 数字英文字母汉字首字母 兼容简繁体排序
- ROS Noetic入门完整版
- 20190421 工作周记录-反思
- 字节跳动加持游戏产业-千氪
- ISIS的基本介绍与实验操作