MVP之登录
来源:互联网 发布:阴阳师录屏软件 编辑:程序博客网 时间:2024/06/04 23:36
MVP
View和Model的交互都由Persenter完成(View和Model的接口都只在Personter中被调用)
- View 对应于Activity,负责View的绘制以及与用户交互
- Model 依然是业务逻辑和实体模型
- Presenter 负责完成View于Model间的交互
MVC与MCP的区别
MVC: View允许与View进行交互
MVP: Model与View之间的交互由Presenter完成,Presenter与View之间的交互是通过接口的
效果图
创建一个demo后,在main下先创建model,view,presenter三个文件夹
创建bean文件夹,并创建bean对象
public class User { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}创建view和model的接口,先创建接口,再实现
model的登录接口
public interface IUserMode { /** * 登录 * * @param user * @return 约定返回"true"为登录成功,其他为登录失败的错误信息 */ String login(User user);}view的登录接口
public interface IUserView { /** * 登录成功 */ void onLoginSuccess(); /** * 登录失败 * * @param error */ void onLoginFailed(String error);}创建presenter
public class UserPresenter { private final IUserView userView; private final UserMode userMode; public UserPresenter(IUserView userView) { this.userView = userView; this.userMode = new UserMode(); } /** * 登录 * * @param user */ public void login(final User user) { new Thread() { @Override public void run() { final String res = userMode.login(user); new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { if ("true".equals(res)) { userView.onLoginSuccess(); } else { userView.onLoginFailed(res); } } }); } }.start(); }}
创建view和model的实现类
model的登录实现类
public class UserMode implements IUserMode { @Override public String login(User user) { boolean networkError = false; //网络是否异常 try { Thread.sleep(3000);//模拟网络连接 if (networkError) { return "网络异常"; } else if ("ethanco".equals(user.getUsername()) && "123456".equals(user.getPassword())) { return "true"; } else { return "账号或密码错误"; } } catch (InterruptedException e) { e.printStackTrace(); return e.getMessage(); } }}
view的登录实现(MainActivity)
public class MainActivity extends AppCompatActivity implements IUserView, View.OnClickListener { private UserPresenter userPresenter; private EditText etUserName; private EditText etPassword; private ProgressDialog loginProgreess; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etUserName = (EditText) findViewById(R.id.et_userName); etPassword = (EditText) findViewById(R.id.et_password); findViewById(R.id.btn_login).setOnClickListener(this); userPresenter = new UserPresenter(this); } @Override public void onLoginSuccess() { loginProgreess.dismiss(); Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show(); } @Override public void onLoginFailed(String error) { loginProgreess.dismiss(); Toast.makeText(getApplicationContext(), "登录失败:" + error, Toast.LENGTH_SHORT).show(); } @Override public void onClick(View v) { String username = etUserName.getText().toString().trim(); String password = etPassword.getText().toString().trim(); if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) { Toast.makeText(getApplicationContext(), "账号或密码不能为空", Toast.LENGTH_SHORT).show(); return; } loginProgreess = ProgressDialog.show(this, "登录", "正在登录..."); userPresenter.login(new User(username, password)); }}
阅读全文
0 0
- MVP之登录
- MVP之登录和注册
- Mvp登录
- mvp登录
- MVP登录
- Android之MVP模式实现登录和网络数据加载
- 请求网络接口_注册登录之MVP模式
- android mvp实现登录
- MVP 实现登录注册
- MVP的简单登录
- 登录注册mvp模式
- MVP注册登录
- MVP 登录注册
- MVP架构,登录页面
- MVP注册登录
- MVP的简单登录
- MVP简单登录实现
- 简单登录 MVP
- 栈
- Android如何控制导航栏单个按键的显隐状态
- StringUtils工具类的常用方法
- BZOJ 1576: [Usaco2009 Jan]安全路经Travel【最短路树】【树链剖分】
- vim常用命令总结 (转)
- MVP之登录
- Java中的各种代码块的区别
- robot framework 中对于有滚动条的页面中元素的处理
- 数据结构之 栈的应用
- Selenium学习笔记(webdriver环境搭建)
- STL容器
- Caffe+VS2015环境配置Cmake过程报错—— The C compiler identification is unknown解决方案
- python整理面试题(1)
- 12.贝叶斯正则化,在线学习,误差分析,销蚀分析