Android使用mvp模式入门
来源:互联网 发布:java 引号转义 编辑:程序博客网 时间:2024/06/04 18:02
什么是MVP (Model-View-Presenter)
MVP模式:
View不直接与Model交互,而是通过与Presenter交互来与Model间接交互
Presenter与View的交互是通过接口来进行的,更有利于添加单元测试
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑
举例个登录例子。
效果:
项目结构
(1)首先我们需要一个UserBean,用来保存用户信息:
public class UserBean { private String mobile ; private String userpwd ; public UserBean (String mobile, String userpwd) { this .mobile = mobile; this .userpwd = userpwd; } public String getMobile() { return mobile; } public String getUserpwd() { return userpwd; }}
(2)再来看看View接口:
public interface IUserView { int getID(); String getMobile(); String getUserPwd(); void setMobile (String mobile); void setUserpwd (String userpwd);}
(3)Model接口:
public interface IUserModel { void setID (int id); void setMoblie (String moblie); void setUserPwd (String userPwd); UserBean load (int id);}
public class UserModel implements IUserModel { private String usermobile; private String userPwd; private int mID; private SparseArray<UserBean> mUsererArray = new SparseArray<UserBean>(); @Override public void setID(int id) { // TODO Auto-generated method stub mID = id; } @Override public void setMoblie(String mobile) { // TODO Auto-generated method stub usermobile = mobile; } @Override public void setUserPwd(String userpwd) { // TODO Auto-generated method stub userPwd = userpwd; UserBean UserBean = new UserBean(usermobile, userpwd); mUsererArray.append(mID, UserBean); } @Override public UserBean load(int id) { // TODO Auto-generated method stub mID = id; UserBean userBean = mUsererArray.get(mID, new UserBean("no data ", "not data")); return userBean; }}
(4)Presenter:
至此,Presenter就能通过接口与View及Model进行交互了:
public class UserPresenter { private IUserView mUserView ; private IUserModel mUserModel ; public UserPresenter (IUserView view) { mUserView = view; mUserModel = new UserModel(); } public void saveUser( int id , String moblie , String userpwd) { mUserModel .setID (id ); mUserModel.setMoblie (moblie ); mUserModel.setUserPwd (userpwd ); } public void loadUser( int id ) { UserBean user = mUserModel .load (id ); mUserView.setMobile(user.getMobile ());//通过调用IUserView的方法来更新显示 mUserView.setUserpwd (user.getUserpwd ()); }}
(5)LoginActivity:
@Overridepublic void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_login: mUserPresenter.saveUser(getID(), getMobile(), getUserPwd()); break; case R.id.btn_getValue: mUserPresenter.loadUser(getID()); break; default: break; }}
View只负责处理与用户进行交互,并把数据相关的逻辑操作都扔给了Presenter去做。而Presenter调用Model处理完数据之后,再通过IUserView更新View显示的信息
源码下载地址
更多源码请关注微信公众号:aikaifa ,第一时间推送博文源码
0 0
- Android使用mvp模式入门
- android使用MVP模式
- Android中的MVP模式使用
- Android MVP 模式的使用
- Android MVP模式的使用
- Android MVP模式的使用
- android中mvp模式使用
- Android框架模式(1)-MVP入门
- android 之MVP模式的入门
- Android框架模式(1)-MVP入门
- Android平台MVP开发模式实战入门
- Android框架模式(1)-MVP入门
- Android中的MVP模式入门解析
- Android之MVP入门使用(一)
- MVP模式的入门
- MVP模式入门
- android使用mvp模式实现登陆demo
- Android开发技巧(使用MVP模式)
- UML用例图总结
- JS第六天
- truncate 和 drop table 的区别
- javascript 常见方法
- 构建微服务-第一章-什么是微服务_007其他功能分解技术
- Android使用mvp模式入门
- FloatingActionButton的使用
- Android NDK环境配置
- 链接字符串各属性介绍
- Apache Felix Event Admin在ServiceMix容器下使用
- leetcode--Linked List Cycle II
- 构建微服务-第一章-什么是微服务_008总结
- ZOJ3229:Shoot the Bullet 有源汇上下界最大流
- Log4j 配置详解