android Mvp简单实用
View 对应于Activity,负责View的绘制以及与用户交互
Model 依然是业务逻辑和实体模型
Presenter 负责完成View于Model间的交互
模拟客户端的登录操作,并实现登录成功与登录失败的回调。
1.bean文件
package com.mvp.bean;
public class UserBean {
private String username;
private String pwd;
public UserBean() {
super();
}
public UserBean(String username, String pwd) {
super();
this.username = username;
this.pwd = pwd;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
2.Model
package com.mvp.model;
import com.mvp.listener.OnLoginListener;
public interface UserModel {
// 登录
void Login(String username, String pwd,OnLoginListener listener);
}
3.Model的实现,OnLoginListener是成功、失败的回调
package com.mvp.model;
import android.annotation.SuppressLint;
import com.mvp.listener.OnLoginListener;
@SuppressLint("HandlerLeak")
public class UserModelImpl implements UserModel {
/**
* 实现业务操作
*/
@Override
public void Login(final String username, String pwd,
final OnLoginListener listener) {
new Thread() {
@Override
public void run() {
if (username.equals("1")) {
listener.onSuccess();
} else if (username.equals("2")) {
listener.onError();
}
}
}.start();
}
}
4.UserView
package com.mvp.view;
public interface UserView {
String getUserName();
String getPwd();
void showDialog(String title);
}
5.Presenter
package com.mvp.presenter; import android.os.Handler; import com.mvp.listener.OnLoginListener;
import com.mvp.model.UserModel;
import com.mvp.model.UserModelImpl;
import com.mvp.view.UserView; public class UserPresenter {
private UserModel userModel;
private UserView userView;
private Handler mHandler = new Handler(); public UserPresenter(UserView userView) {
this.userView = userView;
userModel = new UserModelImpl();
} public void login(String username, String pwd) {
userModel.Login(username, pwd, new OnLoginListener() { @Override
public void onSuccess() {
mHandler.post(new Runnable() { @Override
public void run() {
userView.showDialog("success");
}
});
} @Override
public void onError() {
mHandler.post(new Runnable() { @Override
public void run() {
userView.showDialog("error");
}
});
}
});
}
}
6.Activity文件
package com.mvp.view; import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; import com.mvp.presenter.UserPresenter; public class MainActivity extends Activity implements UserView, OnClickListener {
private TextView tv_show;
private EditText et_username, et_pwd;
private Button btn_save, btn_clear;
private UserPresenter userPresenter;
private Context context; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
} private void initView() {
userPresenter = new UserPresenter(this);
tv_show = (TextView) findViewById(R.id.tv_show);
et_username = (EditText) findViewById(R.id.et_username);
et_pwd = (EditText) findViewById(R.id.et_pwd);
findViewById(R.id.btn_save).setOnClickListener(this);
findViewById(R.id.btn_clear).setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
userPresenter.login(getUserName(), getPwd());
break;
case R.id.btn_clear:
break;
}
} @Override
public String getUserName() {
return et_username.getText().toString();
} @Override
public String getPwd() {
return et_pwd.getText().toString();
} @Override
public void showDialog(String title) {
new AlertDialog.Builder(this).setTitle(title)
.setPositiveButton("确定", null).setNegativeButton("取消", null)
.show();
}
}
android Mvp简单实用的更多相关文章
- Android ListView简单实用
layout创建: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ ...
- Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇
效果图镇楼 FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧. ...
- Android ProgressDialog 简单实用
ProgressDialog progressDialog; @SuppressLint("HandlerLeak") Handler handler1 = new Handler ...
- 关于Android对话框简单实用方法总结
要显示一个对话框,首先需要在xx.xml下添加一个Button按钮,并添加一个对应id. 单次点击事件对话框: button.setOnClickListener(new View.OnClickLi ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- [Android] Android MVP 架构下 最简单的 代码实现
Android MVP 架构下 最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...
- android mvp高速开发框架介绍(dileber的简单介绍)
今天我为大家介绍一款android mvp框架:dileber(https://github.com/dileber/dileber.git) 官方交流qq群:171443726 我个人qq:2971 ...
- Android MVP模式简单易懂的介绍方式 (一)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...
- Android MVP+Retrofit+RxJava实践小结
关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...
随机推荐
- JQ 复制节点
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java菜鸟篇<三> Jquery弹窗插件Lhgdialog的用法( 原文搬抄+添加,方便以后查找,书签太多了)
今天带我的大神让我做个消息提示,我准备用dialog作,于是乎百度+自己动动脑子 百度原文: Lhgdialog的用法 大家都知道用js可以实现,但是在使用js实现的弹窗时得考虑很东西:浏览器的兼容. ...
- 运行加速多线程和GPU
http://blog.csdn.net/augusdi/article/details/11883003
- php中Maximum execution time of 120 seconds exceeded时间超时错误解决方案
1.修改php的配置文件,找到php.ini文件 max_execution_time = 120 ;//设置成你想要的值,单位是秒 2.使用ini_set()函数,使用这个函数来改变你的最大执行时间 ...
- 2015.4.10-SQL 高级查询(二)
1.TOP字句: 用于规定要返回的记录的数目 select top number(个数)/percent(百分数) 列名 from 表名 2.like模糊查询,用于where字句中,以及通配符 ...
- javascript事件委托和jQuery事件绑定on、off 和one
一. 事件委托什么是事件委托?用现实中的理解就是:有100 个学生同时在某天中午收到快递,但这100 个学生不可能同时站在学校门口等,那么都会委托门卫去收取,然后再逐个交给学生.而在jQuery 中, ...
- php.ini 全站,和htaccess web目录 默认头部和尾部 auto_prepend_file
php.ini ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file auto_prepe ...
- 【maven学习笔记】 01 初见
想学maven,maven是ant的替代品. 1:下载 maven是apache的顶级项目,在http://maven.apache.org/可以直接下载. 2:环境变量 下载完要配置环境变量,把bi ...
- hightchart or hightstock 格式Y数据
hightchart or hightstock 格式Y数据,鼠标放在上面显示两位小数 方法一: tooltip: { shared: true, crosshairs: true , formatt ...
- Inno Setup 创建站点,创建虚拟目录
原文 http://hi.baidu.com/0531_sunmiles/item/ce22554ab7d33d0be9350477 下面的这段代码是用Inno Setup 做安装包的时候创建IIS新 ...