android中的MVP模式
1、建立bean
public class UserBean {
private String mFirstName;
private String mLastName; public UserBean(String firstName, String lastName) {
this. mFirstName = firstName;
this. mLastName = lastName;
} public String getFirstName() {
return mFirstName;
} public String getLastName() {
return mLastName;
}
}
2、 建立model(处理业务逻辑,这里指数据读写),先写接口,后写实现
public interface IUserModel {
void setID(int id); void setFirstName(String firstName); void setLastName(String lastName); int getID(); UserBean load(int id);// 通过id读取user信息,返回一个UserBean
}
具体的实现可以自定义
3、建立view(更新ui中的view状态),这里列出需要操作当前view的方法,也是接口
public interface IUserView {
int getID(); String getFristName(); String getLastName(); void setFirstName(String firstName); void setLastName(String lastName);
}
4、建立presenter(主导器,通过iView和iModel接口操作model和view),activity可以把所有逻辑给presenter处理,这样java逻辑就从手机的activity中分离出来。
public class UserPresenter {
private IUserView mUserView;
private IUserModel mUserModel; public UserPresenter(IUserView view) {
mUserView = view;
mUserModel = new UserModel();
} public void saveUser( int id, String firstName, String lastName) {
mUserModel.setID(id);
mUserModel.setFirstName(firstName);
mUserModel.setLastName(lastName);
} public void loadUser( int id) {
UserBean user = mUserModel.load(id);
mUserView.setFirstName(user.getFirstName()); // 通过调用IUserView的方法来更新显示
mUserView.setLastName(user.getLastName());
}
}
5、activity中实现iview接口,在其中操作view,实例化一个presenter变量。
public class MainActivity extends Activity implements OnClickListener,IUserView { UserPresenter presenter;
EditText id,first,last;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main); findViewById(R.id. save).setOnClickListener( this);
findViewById(R.id. load).setOnClickListener( this);
id = (EditText) findViewById(R.id. id);
first = (EditText) findViewById(R.id. first);
last = (EditText) findViewById(R.id. last); presenter = new UserPresenter( this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id. save:
presenter.saveUser(getID(), getFristName(), getLastName());
break;
case R.id. load:
presenter.loadUser(getID());
break;
default:
break;
}
} @Override
public int getID() {
return new Integer( id.getText().toString());
} @Override
public String getFristName() {
return first.getText().toString();
} @Override
public String getLastName() {
return last.getText().toString();
} @Override
public void setFirstName(String firstName) {
first.setText(firstName);
} @Override
public void setLastName(String lastName) {
last.setText(lastName);
} }
所谓的mvp,即是(model-处理业务逻辑(主要是数据读写,或者与后台通信(其实也是读写数据)),view-处理ui控件,presenter-主导器,操作model和view)
android中的MVP模式的更多相关文章
- Android 中的MVP 模式
MVP模式的核心思想: MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成功接口,Model类还是原来的Model. MVC 其中View层其实就是程序的UI界面,用于向用户展示 ...
- Android -- 思考 -- 为什么要在项目中使用MVP模式
1,其实有时候一直在找借口不去思考这个问题,总是以赶项目为由,没有很认真的思考这个问题,为什么我们要在项目中使用MVP模式,自己也用MVP也已经做了两个项目,而且在网上也看了不少的文章,但是感觉在高层 ...
- Android上实现MVP模式的途径
今天我想分享我在Android上实现MVP(Model-View-Presenter)模式的方法.如果你对MVP模式还不熟悉,或者不了解为什么要在Android应用中使用MVP模式,推荐你先阅读这篇维 ...
- Java(Android)编程思想笔记03:在Android开发中使用MVP模式
1. MVP模式简介: MVC模式相信大家肯定是比较熟悉的:M-Model-模型.V-View-视图.C-Controller-控制器. MVP作为MVC的演化版本,那么类似的MVP所对应的意义:M- ...
- 在Andoid开发中使用MVP模式来解耦,增加可测试性
by Jeff Angelini posted on 7/20/2011 2:35:00 PM 将应用程序UI的表现从Ui的逻辑中分离是一个好的想法.这种分离减少了代码耦合,代码更加干净, 甚至可以有 ...
- Android中的MVP架构初探
说来羞愧,MVP的架构模式已经在Android领域出现一两年了.可是到今天自己才開始Android领域中的MVP架构征程. 闲话不多说,開始吧. 一.架构演变概述 我记得我找第一份工作时,面试官问我& ...
- Android中的启动模式(下)
在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android中Activity启动模式探索
Android中启动模式(launchMode)分为standard, singleTop, singleTask, singleInstance四种,可通过AndroidManifest.xml文件 ...
随机推荐
- Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用
目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要 ...
- android学习笔记55——ContentProvider_2
实现ContentProvider 创建ContentProvider的步骤: 1.开发一个ContentProvider的子类,该子类需要实现增.删.改.查等方法: 2.在AndroidMainfe ...
- Hadoop学习18--yarn配置篇-基本配置节点
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <va ...
- CSS基本知识汇总
1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets),是一种用来表现 HTML 文档样式的语言,样式定义如何显示 HTML 元素,是能够真正做到网页表现与结构分离的 ...
- div 居中
Found another solution: Just add position: relative; top: 50%; transform: translateY(-50%); to the i ...
- osmdroid启程
osmdroid一个牛逼的开源地图引擎,从今天开始好好研究一下~
- JAVAWEB监听器(二)
监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事 ...
- ini 文件
INI文件是一个无固定标准格式的配置文件.它以简单的文字与简单的结构组成,常常使用在视窗操作系统,或是其他操作系统上,许多程序也会采用INI文件做为设置程序之用.视窗操作系统后来以注册表的形式替换掉I ...
- 6. js时间比较
var v0 = ABS_DATESTRING(O_PARAMETER.FDate,"yyyy/MM/dd")var v_beginTime = v0 + " " ...
- XidianOJ 1097 焊板子的xry111
题目描述 我们知道xry111不仅仅代码写的棒,硬件也不是一般人可以比拟的,比如他可以左手右手加上嘴里叼着一个烙铁一起工作,同时焊接三块板子!Orz,现在他的实验室知道他这么厉害了,准备让他焊接N块板 ...