Android 知识杂记(MVP模式)
MVP的模式在于将原来activity中业务逻辑的部分剥离出来,代码示例如下:

- Account
public class Account {
private String mUsername;
private String mPassword;
public String getmUsername() {
return mUsername;
}
public void setmUsername(String mUsername) {
this.mUsername = mUsername;
}
public String getmPassword() {
return mPassword;
}
public void setmPassword(String mPassword) {
this.mPassword = mPassword;
}
}
- IAccountModel
public interface IAccountModel {
void setAccount(String username, String password);
Account getAccount();
}
- AccountModel
public class AccountModel implements IAccountModel {
private Account mAccount;
public AccountModel(){
mAccount = new Account();
}
@Override
public void setAccount(String username, String password) {
mAccount.setmUsername(username);
mAccount.setmPassword(password);
}
@Override
public Account getAccount() {
return mAccount;
}
}
- AccountPresenter
public class AccountPresenter {
private IAccountModel mAccountModel;
private IAccountView mAccountView;
//view的实现还是在activity中
public AccountPresenter(IAccountView view){
mAccountView = view;
mAccountModel = new AccountModel();
}
//初始化账号显示,该业务逻辑被封装在presenter中
public void initAccount(String username, String password){
mAccountModel.setAccount(username, password);
mAccountView.setUsernameEdit(mAccountModel.getAccount().getmUsername());
mAccountView.setPasswordEdit(mAccountModel.getAccount().getmPassword());
}
}
- IAccountView
public interface IAccountView {
public void setUsernameEdit(String username);
public void setPasswordEdit(String password);
}
- MainActivity
public class MainActivity extends Activity implements IAccountView{
private EditText mUsername;
private EditText mPassword;
private AccountPresenter mAccountPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUsername = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.password);
mAccountPresenter = new AccountPresenter(this);
mAccountPresenter.initAccount("fredric", "fredricpassword");
}
@Override
public void setUsernameEdit(String username) {
mUsername.setText(username);
}
@Override
public void setPasswordEdit(String password) {
mPassword.setText(password);
}
}
Android 知识杂记(MVP模式)的更多相关文章
- [译]Google官方关于Android架构中MVP模式的示例
概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...
- Android 中的MVP 模式
MVP模式的核心思想: MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成功接口,Model类还是原来的Model. MVC 其中View层其实就是程序的UI界面,用于向用户展示 ...
- Android上实现MVP模式的途径
今天我想分享我在Android上实现MVP(Model-View-Presenter)模式的方法.如果你对MVP模式还不熟悉,或者不了解为什么要在Android应用中使用MVP模式,推荐你先阅读这篇维 ...
- Android开发之MVP模式的使用
前几天发现,在Android项目代码里有一个Activity类行数居然有1000多行,而600行左右都是逻辑控制,真正和页面控件处理相关的代码不多,虽然可以用#region <>...#e ...
- Google官方关于Android架构中MVP模式的示例续-DataBinding
基于前面的TODO示例,使用Data Binding库来显示数据并绑定UI元素的响应动作. 这个示例并未严格遵循 Model-View-ViewModel 或 Model-View-Presenter ...
- Android知识杂记(四)
1.完整退出activity的设计思路 1.1 封装一个基础activity类 public abstract class RootActivity extends FragmentActivity{ ...
- android知识杂记(三)
记录项目中的android零碎知识点,用以备忘. 1.android 自定义权限 app可以自定义属于自己的权限: <permission android:description="s ...
- android知识杂记(二)
记录项目中的android零碎知识点,用以备忘. AsyncQueryHandler 继承与handler,可以用于处理增删改(ContentProvider提供的数据) 例如:query = new ...
- android知识杂记(一)
记录项目中用的零碎知识点,用以备忘. android:screenOrientation:portrait 限制横屏 activity启动状态 singleTop 只执行一次,通常用在欢迎页面 sin ...
随机推荐
- Linux C编程学习之开发工具2---GDB调试器
简介 GDB是一个功能强大的交互式程序调试工具,主要工作在字符界面下. GDB不仅可以用来调试C/C++ 语言编写的程序,还可以用来调试 Pascal.Objective-C,以及Fortran等语言 ...
- 攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行
此种方式不能直接在eclipse中调试代码. 首先需要在src下放置服务器上的hadoop配置文件:core-site.xml\yarn-site.xml\hdfs-site.xml\mapred-s ...
- linux shell基础命令
du -h #查询磁盘文件大小和列表 df -h # 查询服务器磁盘使用情况 top/free # 查询服务器内存,cpu等资源使用情况 iptables # 防火墙相关的命令 vi ...
- 一些linux命令
1. more 慢慢查看文件2. mkdir -p 递归的创建目录3. tree 4. ls -lh 人性化显示
- select2 清空数据
最近用select2插件,发现用jquery重置不好使,最后搜罗了一把发现下面这个方法可以间接的实现,有空还得看看插件的API $('#integratorId').select2('data', n ...
- Git命令参考手册(文本版)
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...
- 用div加css做表格去掉外围边框
通过div做表格时想加上边框,并且想取点外围边框: <div class="cont"> <div class="row"> <a ...
- 运行时使用Dev的ImageListEditor
uses cxImageListEditor, cxGridMenuOperations; {$R *.dfm} procedure TForm1.Btn1Click(Sender: TObject) ...
- [转]oracle 分析函数over
oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. O ...
- java-并发-线程对象
浏览以下内容前,请点击并阅读 声明 每个线程都和类Thread的实例相关,有两种基本的使用Thread对象来创建并发应用的方法: 直接控制线程的创建和管理,每次需要开始一个异步任务使简单地实例化Thr ...