android使用mvp模式实现登陆demo
来源:互联网 发布:破解 联想 网络控制 编辑:程序博客网 时间:2024/05/16 14:08
最近读到《MVP模式的14条规则》一片关于mvp设计模式的文章 (处http://blog.csdn.net/qinjienj/article/details/6972248)。觉得用mvp会更利于android的界面和逻辑的拆分和单测的进行,试着写了一个登陆的demo。
/** * 登陆界面 com.example.mvptest.LoginActivity * * @author yangqinghai <br/> * create at 2013-5-3 上午10:50:08 */public class LoginActivity extends Activity implements LoginView { private static Context mContext; /** * 账号输入控件 */ private EditText mAccount; /** * 密码输入控件 */ private EditText mPassword; /** * 登陆按钮 */ private Button mLogin; /** * 登陆Presenter */ private LoginPresenter loginPresenter; private LoginHandler mLoginHandler = new LoginHandler(); public static class LoginHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 1: Toast.makeText(mContext, "用户名错误", Toast.LENGTH_LONG).show(); break; case 2: Toast.makeText(mContext, "密码错误", Toast.LENGTH_LONG).show(); break; case 3: Toast.makeText(mContext, "账号异常,请稍后重试", Toast.LENGTH_LONG).show(); break; } } } @Override protected void onCreate(Bundle savedInstanceState) { mContext = this; super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); loginPresenter = new LoginPresenter(this); } public void initView() { mAccount = (EditText) findViewById(R.id.login_account); mPassword = (EditText) findViewById(R.id.login_password); mLogin = (Button) findViewById(R.id.login_loginButton); } public void onLoginClick(View view) { LoginBean loginInfo = new LoginBean(); loginInfo.mAccount = mAccount.getText().toString(); loginInfo.mPassword = mPassword.getText().toString(); loginPresenter.handleClick(loginInfo); } @Override public void reFresh(int reFreshCode) { Message message = new Message(); message.what = reFreshCode; mLoginHandler.sendMessage(message); } @Override public <T> void onLoginClick(T t) { } @Override public void goToMainActivity() { Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); }}
/** * 登陆信息Bean com.example.mvptest.bean.LoginBean * * @author yangqinghai <br/> * create at 2013-5-3 下午3:44:08 */public class LoginBean { private static final String TAG = "LoginBean"; public String mAccount; public String mPassword;}
/*** * 视图 ipresenter.Ipresenter * * @author yangqinghai <br/> * create at 2013-5-3 上午11:39:27 */public interface Ipresenter { /** * 处理点击事件 * * @param t */ public <T> void handleClick(T t); public <T> void handleHttpResult(T t);}
/** * 登陆 ipresenter.LoginPresenter * * @author yangqinghai <br/> * create at 2013-5-3 下午1:25:36 */public class LoginPresenter implements Ipresenter { private static final String TAG = "LoginPresenter"; private Iview iDisplay; public LoginPresenter(Iview display) { iDisplay = display; } @Override public <T> void handleClick(T t) { LoginBean loginBean = (LoginBean) t; new LoginModle(this).startLoginRequest(loginBean); } @Override public <T> void handleHttpResult(T t) { int resultCode = (Integer) t; LoginView loginView = (LoginView) iDisplay; if (resultCode == 0) { loginView.goToMainActivity(); } else { loginView.reFresh(resultCode); } }}
/** * 登陆modle com.example.mvptest.modle.LoginModle * * @author yangqinghai <br/> * create at 2013-5-3 下午4:35:12 */public class LoginModle extends Thread { private static final String TAG = "LoginModle"; private Ipresenter iPresenter; private LoginBean mLoginBean; /** * 结果码 。方便测试用,声明成static */ private static int ResultCode; public LoginModle(Ipresenter p) { iPresenter = p; } /** * 开启登陆请求 */ public void startLoginRequest(LoginBean loginBean) { mLoginBean = loginBean; start(); } @Override public void run() { super.run(); // 休眠3000毫秒,标示登陆处理过程 try { Thread.sleep(3000); } catch (InterruptedException e) { Log.e(TAG, "", e); } // 根据实际情况返回结果代码 iPresenter.handleHttpResult(ResultCode); ResultCode += 1; }}
/** * 视图view接口 定义 com.example.mvptest.iview.Iview * * @author yangqinghai <br/> * create at 2013-5-3 上午10:55:51 */public interface Iview { /** 刷新界面 **/ public void reFresh(int reFreshCode);}
public interface LoginView extends Iview { /** * 登陆处理 * * @param t */ public <T> void onLoginClick(T t); public void goToMainActivity();}
- android使用mvp模式实现登陆demo
- android 使用MVP模式完成一个小demo——登陆
- 浅谈MVP模式附有登陆Demo
- MVP模式实现接口登陆
- 使用MVP+Retrofit+RxJava实现的的Android Demo (上)使用Nuclues库实现MVP
- Android MVP模式实现
- android使用MVP模式
- Android MVP模式之模拟登陆功能
- Android MVP模式之模拟登陆功能
- ANdroid mvp 模式 优秀的学习demo
- mvp模式的登陆
- 这是一个使用mvp模式实现模拟用户登录的简单Demo。
- Android 使用MVP模式 实现一个查询功能。
- MVP模式Demo
- Android中的MVP模式使用
- Android使用mvp模式入门
- Android MVP 模式的使用
- Android MVP模式的使用
- ubuntu常用命令
- 数据库表被锁
- 【android】scaleType属性与ImagView中图片的显示的关系
- 【转】函数重载、覆盖和隐藏
- Android 常用代码片段
- android使用mvp模式实现登陆demo
- 科目三考试项目分类评判标准
- Ant 设置http代理
- ExtJs4.0 Panel实例
- DELPHI中UTF8保存,读取
- 那些年那些人创业失败的经验教训
- 金山手机毒霸工作原理
- nodejs在windows上的配置
- LIGHTOJ 1256 - Word Puzzle(欧拉路)