android Mvp简单实用
2016-01-04 13:03
387 查看
View 对应于Activity,负责View的绘制以及与用户交互
Model 依然是业务逻辑和实体模型
Presenter 负责完成View于Model间的交互
模拟客户端的登录操作,并实现登录成功与登录失败的回调。
1.bean文件
2.Model
3.Model的实现,OnLoginListener是成功、失败的回调
4.UserView
5.Presenter
6.Activity文件
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:BroadcastReceiver:采用广播接收者拦截外拔电话、发送广播、其他常用广播、特性
- viewPager+fragment阻止预加载
- Android代码混淆的注意事项
- android 打开手电筒 适配camera2
- Android:BroadcastReceiver:采用广播接收者实现短信窃听器
- Android 4.4 Kitkat Phone工作流程浅析(八)__Phone状态分析
- android studio 导入第三方库类和.jar、.so 包
- Android开发之MediaPlayer和SurfaceView组成视频播放器
- Android动态设置Margin的方法
- Android Push Notification实现信息推送使用
- 学习笔记:Android基本组件之Activity
- android 使用字体图标(Icon Font)
- android开发笔记:framgment相关
- android 自定义控件之圆形菜单
- Android APK 手动命令编译、打包、签名步骤
- Android签名总结
- Android开发总结笔记 View的事件分发机制 3-9
- Android:Intent
- Android:Activity:生命周期
- Android中无返回值的页面跳转