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模式)的更多相关文章

  1. [译]Google官方关于Android架构中MVP模式的示例

    概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...

  2. Android 中的MVP 模式

    MVP模式的核心思想: MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成功接口,Model类还是原来的Model. MVC 其中View层其实就是程序的UI界面,用于向用户展示 ...

  3. Android上实现MVP模式的途径

    今天我想分享我在Android上实现MVP(Model-View-Presenter)模式的方法.如果你对MVP模式还不熟悉,或者不了解为什么要在Android应用中使用MVP模式,推荐你先阅读这篇维 ...

  4. Android开发之MVP模式的使用

    前几天发现,在Android项目代码里有一个Activity类行数居然有1000多行,而600行左右都是逻辑控制,真正和页面控件处理相关的代码不多,虽然可以用#region <>...#e ...

  5. Google官方关于Android架构中MVP模式的示例续-DataBinding

    基于前面的TODO示例,使用Data Binding库来显示数据并绑定UI元素的响应动作. 这个示例并未严格遵循 Model-View-ViewModel 或 Model-View-Presenter ...

  6. Android知识杂记(四)

    1.完整退出activity的设计思路 1.1 封装一个基础activity类 public abstract class RootActivity extends FragmentActivity{ ...

  7. android知识杂记(三)

    记录项目中的android零碎知识点,用以备忘. 1.android 自定义权限 app可以自定义属于自己的权限: <permission android:description="s ...

  8. android知识杂记(二)

    记录项目中的android零碎知识点,用以备忘. AsyncQueryHandler 继承与handler,可以用于处理增删改(ContentProvider提供的数据) 例如:query = new ...

  9. android知识杂记(一)

    记录项目中用的零碎知识点,用以备忘. android:screenOrientation:portrait 限制横屏 activity启动状态 singleTop 只执行一次,通常用在欢迎页面 sin ...

随机推荐

  1. 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com

    收集了N多视频小站,然后花了3天时间弄了一个鱼搜搜索网站.欢迎大家访问哟. http://www.7yusou.com

  2. SQL Server 系统数据库

    Sql Server的系统数据库分为:master.model.msdb,resouce和tempdb,这五个数据库在SQL Server中各司其职,作为研发人员,很有必要了解这几个数据库的职责,下面 ...

  3. DDD建模案例----“视频课程”场景

    接触领域驱动设计DDD有一年多的时间了,中间看过不少书,参与过一些讨论(ENode QQ群).目前对DDD的认知还停留在理论阶段,所以对领域建模非常感兴趣,这里说的建模是指以DDD的思想为指导再加上D ...

  4. CozyRSS开发记录10-RSS源管理

    CozyRSS开发记录10-RSS源管理 1.RSS源树结构 做解析体力活很多,把RSS解析的优化先放放,先玩一玩RSS源的管理. 虽然在初步的设计中,RSS源是以一个列表的方式来展示,但是,我觉得如 ...

  5. Scrapy框架实现爬虫

    实战中的遇到的问题总结: 1.

  6. JAVA基础研究

    package Test; public class L3_1 { public static void main(String[] args) { C c1=new C(100); C c2=new ...

  7. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

  8. 获取终端ip地址

    网上找的,记录下 import java.io.*; import java.net.*; import java.util.*; //import org.apache.http.conn.util ...

  9. 疑难问题解决备忘录(2)——ubuntu12.04分配swap

    分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文 ...

  10. winform下的简易播放器

    编写这个播放器,遇到很多问题,比如目前只实现了wav音频文件的播放,而对于这个图中中间所标注的按钮 不能实现让其暂停的功能,同时当点击的时候,让其文本变为"▷",对于这部分功能不知 ...