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 ...
随机推荐
- quick-x 2.2.5 DragonBones 某些fla导出使用后player卡死
1 2 3 4 5 6 7 8 9 10 11 --test 龙骨 self._db = dragonbones.new({ skeleton="game ...
- Javascript DOM编程艺术JS代码
//com function addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload != 'fun ...
- NOIP2012模拟试题【奶牛晒衣服】
1.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任 ...
- 龙芯3A上V8的编译与测试
使用平台: loongson3a+debian6.0.3+linux2.6.36.3+gcc4.6.3 一: V8的下载 这里V8是从其官网上使用git下载的: (1)如果没有git和git-svn需 ...
- install boost in ubuntu
1. 获取boost安装包 a. 使用命令下载. wget -O boost_1_54_0.tar.bz2 http://downloads.sourceforge.net/project/boost ...
- Centos6.5下安装php
安装php: yum -y install php 重启httpd服务激活php: /etc/init.d/httpd restart 测试php是否安装完成 vim /var/www/html/in ...
- flask-sqlalchemy 关系表简单操作
from flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyfrom flask.ext.migrate import Migr ...
- 使用事件CreateEvent注意事项
HANDLECreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes,// 安全属性 BOOLbManualReset,// 复位方式 BOOLbInit ...
- UVA 12563 Jin Ge Jin Qu hao
dp-背包 开始用普通dp写了一发发现没法确定最大时间... 后来看到大牛机智的写法,嗯...dp表示当前状态能否成立:然后从条件最好的状态开始遍历,直到这个状态成立然后退出遍历. 具体的看代码吧.. ...
- 1.C语言关键字(auto break case char const swtich)
ANSI C标准C语言共有32个关键字,分别为: auto break case char const continue default do double else enum extern floa ...