当前位置: 首页 > 编程日记 > 正文

Android 知识杂记(MVP模式)

MVP的模式在于将原来activity中业务逻辑的部分剥离出来,代码示例如下:

  • Account
public class Account {private String mUsername;private String mPassword;public String getmUsername() {return mUsername;}public void setmUsername(String mUsername) {this.mUsername = mUsername;}public String getmPassword() {return mPassword;}public void setmPassword(String mPassword) {this.mPassword = mPassword;}
}
  • IAccountModel
public interface IAccountModel {void setAccount(String username, String password);Account getAccount();
}
  • AccountModel
public class AccountModel implements IAccountModel {private Account mAccount;public AccountModel(){mAccount = new Account();}@Overridepublic void setAccount(String username, String password) {mAccount.setmUsername(username);mAccount.setmPassword(password);        }@Overridepublic Account getAccount() {return mAccount;}
}
  • AccountPresenter
public class AccountPresenter {private IAccountModel mAccountModel;private IAccountView mAccountView;//view的实现还是在activity中public AccountPresenter(IAccountView view){mAccountView = view;mAccountModel = new AccountModel();}//初始化账号显示,该业务逻辑被封装在presenter中public void initAccount(String username, String password){mAccountModel.setAccount(username, password);mAccountView.setUsernameEdit(mAccountModel.getAccount().getmUsername());mAccountView.setPasswordEdit(mAccountModel.getAccount().getmPassword());}
}
  •  IAccountView
public interface IAccountView {public void setUsernameEdit(String username);public void setPasswordEdit(String password);
}
  • MainActivity

public class MainActivity extends Activity implements IAccountView{private EditText mUsername;private EditText mPassword;private AccountPresenter mAccountPresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mUsername = (EditText) findViewById(R.id.username);mPassword = (EditText) findViewById(R.id.password);mAccountPresenter = new AccountPresenter(this);mAccountPresenter.initAccount("fredric", "fredricpassword");}@Overridepublic void setUsernameEdit(String username) {mUsername.setText(username);}@Overridepublic void setPasswordEdit(String password) {mPassword.setText(password);}    
}

转载于:https://www.cnblogs.com/Fredric-2013/p/5220657.html

相关文章:

玩转百度即用API(2)——身份证查询

2019独角兽企业重金招聘Python工程师标准>>> 第二个即用API,身份证查询 示例代码: #-*- coding: utf-8 -*- #version:0.1 #note:该即用API接口简单,输入身份证只能查到3个信息:大概地址,性别&am…

解决Ubuntu环境下不能QT不能输入中文

参考链接: https://blog.csdn.net/baidu_33850454/article/details/81212026?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2…

UE5虚幻引擎5中的实时特效学习 Introduction to real time FX in Unreal Engine 5

MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:40节课(3h 36m) |大小解压后:2.65 GB 含课程文件 从零开始使用尼亚加拉在虚幻引擎中学习实时外汇…

《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM 。 Serial 收集器 Serial 收集器是最基本、发展历史最悠久的收集器,曾经(在 …

2016寒假训练3

题目链接 A CodeForces 362A Two Semiknights Meet 题意:在一个棋盘中有两个定义了特殊走法的棋子,同时移动他们,问是否会相遇(只能在合法的位置)。 做法:直接暴力dfs处理出这两个棋子到达各个位置的时间&a…

2015化妆品行业如何进行微信公众号营销

对比其他行业发展特点发现化妆品行业具有以下特点: 1、化妆品行业呈现节日、电商促销影响明显、口碑评价关注度高、女性网民占比高冲动消费多、整体用户年轻化等特点。 2、化妆品行业即使在各行业发展低迷期依然保持良好发展势头。 3、化妆品商家的顾客回头率高。 4…

在新建好的ROS空间里面添加功能包

第一步:创建功能包 cd catkin_ws打开src ~/catkin_ws/src新建文件夹名字 catkin_create_pkg (文件加名字) roscpp rospy std_msgs打开新建文件夹中的src ~/catkin_ws/src/(新建文件夹名字)/src输入: gedit 文件.cpp返回工作空间: 执行catkin build 编译后即可执行

Revit的Enscape基本培训(2021) Enscape Essential Training for Revit (2021)

MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:2h 53m |大小解压后:2.23 GB 含课程练习文件 如果您使用Revit,您可能需要学习Enscape&…

设计模式学习2:单例模式

单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,它充当数据存储源的代理&#xf…

数据库插入时,标识列插入显式值

当 IDENTITY_INSERT 设置为 OFF 时,不能为表 CU_GiftExchange 中的标识列插入显式值。SET IDENTITY_INSERT [dbo].[CU_GiftExchange] ONGO转载于:https://blog.51cto.com/hezun/1631849

Ubuntu终端显示文本让选择确定,OK等等

问题1:首先按下"TAB"键,会看到选中文本"确定","OK"然后按下回车键,即可!

Unity安卓游戏开发:打造7款2D 3D游戏 Unity Android Game Development : Build 7 2D 3D Games

流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小:15.4 GB |时长:32h 55m Unity游戏开发与设计,用C# & Unity学习Unity安卓游戏开发(更…

唯一索引和普通索引的选择

前言:最近在研究阿里的开发手册中关于 MySQL 的一些规定,所以来记录一下学习中的心得 唯一索引和普通索引的选择 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。 说明:不要以为唯一索引影响了…

Springboot整合HBase——大数据技术之HBase2.x

Apache HBase 是以hdfs为数据存储的,一种分布式、可扩展的noSql数据库。是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase使用与BigTable(BigTable是一个稀疏的、分布式的、持久化的多维排序map)非常相似的数据模型。用户将数据行存储在带标签的表中。数据行具有可排序的键和任意数量的列。该表存储稀疏,因此如果用户喜欢,同一表中的行可以具有疯狂变化的列。

一个合格的Java选手必须要掌握的并发锁知识

Java内置锁:基于Java语法层面(关键词)实现的锁,主要是根据Java语义来实现,最典型的应用就是synchronized。Java显式锁:基于JDK层面实现的锁,主要是根据基于Lock接口和ReadWriteLock接口,以及统一的AQS基础同步器等来实现,最典型的有ReentrantLock。使用方式:synchronized关键字互斥锁主要有作用于对象方法上面,作用于类静态方法上面,作用于对象方法里面,作用于类静态方法里面等4种方式。

终于有人把Web 3.0和元宇宙讲明白了

分散的数据网络使个人数据(例如个人的健康数据、农民的作物数据或汽车的位置和性能数据)出售或交换成为可能,与此同时,不会失去对数据的所有权控制、放弃数据隐私或依赖第三方平台来管理数据。Web 3.0的目标是在创作者经济中取得更好的平衡。互联网第二次迭代(Web 2.0)的缺陷,加上公有区块链技术的诞生,帮助我们朝着更加去中心化的Web 3.0 迈进,元宇宙和更广泛的去中心化网络都是关于现实世界和虚拟世界的融合。此时的网络中不再是静态内容,而是动态的内容,用户现在可以与发布在网络上的内容进行交互。

ubuntu下安装 python 常用软件

1、用于科学计算的常用包: sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose 包括,numpy, scipy, matplotlib, ipython, ipython-notebook, pandas, sympy, nose 2、…

《团队项目开发之三对一维环形数组的求解》

《团队项目开发之三对一维环形数组的求解》 设计思想:通过把数组的长度扩大为原来的一倍,相当于新数组是由对原来的数组重复了一遍后而组成的,这样保证了数组以环状的形式,按照数组中每个数字的位序依次对它们可能形成的最大子数组…

PX4修改线程内存大小

当编译时出现错误: 在CMakeLists.txt文件中修改内存大小 px4_add_module(#下面添加文件夹名字MODULE modules__position_control#下面添加线程名字MAIN a#线程内存大小STACK_MAIN 4000SRCS#添加文件夹里面.cpp文件main.cppDEPENDS)修改后,再次编译就不…

Blender液体烟与火VFX特效制作教程 Blender VFX Liquid Smoke Fire

流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,48.0 KHz 语言:英语|大小:6.60 GB |时长:7h 44m Blender了解三维模型如何创建模拟和动画的简单方法 你会学到什么 完成创建两个鬼魅万圣节场景的完整指南,包括模拟和全动画元素 使用Blender…

Ajax+SpringBoot+Thymeleaf使用中遇到的跳转页面问题

前言:这周在使用 AjaxThymeleaf 时遇到一个问题,折腾了我很久,在此记录一下 AjaxSpringBootThymeleaf使用中遇到的跳转页面问题 问题描述 我的目的:通过 Ajax 获取数据,并通过 Model 渲染 View ,实现跳转…

数据库分离 脱机

数据库分离:一般默认情况下数据库在联机状态下我们不能对数据库文件进行任何复制删除等操作,如果将数据库分离的话就可以对数据文件进行复制、剪切、删除等操作了。一般想直接备份数据文件,就先分离数据库,之后把数据文件复制到别…

年卡在手,城墙我走: 记葡萄城控件团队建设

上个周六,赶着春天的尾巴,《葡萄城控件业务团队》进行了一次有趣的团队建设:西安城墙半日游。 拿到《2015陕西旅游年票一卡通》,还是小小激动一下,据说有888个景点可以免费游玩呢。 从葡萄城到西安南门,这个…

PX4代码框架

src:目录是源码目录存放所有的源码,源码的查看都应该在这里。 mavlink:是MAvlink的库目录,源码要调用这个库,如果我们要修改和添加MAVLINLK消息ID也是在这个目录下面。 NuttX:是NuttX的系统库&#xff0c…

Houdini魔法特效制作学习教程

大小解压后:12.1G 1920X1080 mp4 语言:英语中英文字幕 Houdini已经成为特效行业的热门工具。 谁运用它的力量,谁就势不可挡。 魔法咒语、科幻盾牌和电磁脉冲冲击波。掌握特效的艺术元素是这里的目标,我们将指导您完成它。 魔法通常…

关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源

前言:这个是昨天晚上在部署一个项目的时候发现的,在此记录一下 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源 问题描述 在部署了一个项目之后,打开项目页面进行测试,发现有一个查询页面查询失败了&#xff0…

JavaScript高级程序设计(第3版)第六章读书笔记

第六章 面向对象的程序设计 1. 数据属性 [[Configurable]]:表示能否通过delete删除属性从而重新定义属性。默认值为true。 [[Enumerable]]:表示能否通过for-in循环返回属性。默认值为true。 [[Writable]]:表示能否修改属性的值,默…

2022-2028年中国钢丸行业市场行情监测及未来前景规划报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢丸行业市场行业相关概述、中国钢丸行业市场行业运行环境、分析了中国钢丸行业市场行业的…

[MySQL]Every derived table must have its own alias

2019独角兽企业重金招聘Python工程师标准>>> 关于这条报错信息,意思是指每个派生出来的表都必须有一个自己的别名。 _mysql_exceptions.OperationalError: (1248, Every derived table must have its own alias) 如下两条select语句可以说明这个问题&am…

Java爬取解析去哪儿景点信息

前言:这两周在做 Web 课的大作业,顺便琢磨了一下如何使用 Java 从网上获取一些数据,现在写这篇博客记录一下。 PS:这里仅限交流学习用,如利用代码进行恶意攻击他网站,和作者无关!!&a…