Android MVP学习笔记
2017-11-10 11:12
239 查看
MVP很简单,敲一遍代码就会:
一, 怎么来理解MVP
M:modelV:View
P : Presenter
基本上介绍MVP的都会介绍每个字母代表什么。对于刚接触MVP的童鞋来说,其实从最简单的来理解就行了(深层次我也不理解 哈哈 ):
M:数据
V:主要是将Activity或Fragment视为View层 负责数据的展示
P : Presenter 业务逻辑的处理
二、代码:
看什么关系图啊,越看越晕,看代码最实际,代码敲一边不理解起码也能先用着:首先我们需要BaseView和BasePresenter;
BaseView和BasePresenter是两个接口里面代码很简单:
下面我们设计业务场景:点击按钮在TextView上显示文字。。
Step1创建契约类MVPContact.class
Step2
创建MVPPresenter
public class MVPPresenter implements MVPContact.Presenter { private MVPContact.View mView; public MVPPresenter(MVPContact.View mView) { this.mView = mView; mView.setPresenter(this); } @Override public void get() { mView.showMessage("哈哈哈"); } @Override public void start() { } @Override public void subscribe() { } @Override public void unsubscribe() { } }
Step3
创建Activity并实现MVPContact.View
public class MvpActivity extends Activity implements MVPContact.View{ @BindView(R.id.btn_get) Button btnGet; @BindView(R.id.tv_show) TextView tvShow; private MVPContact.Presenter mPresenter; @Override public void setPresenter(MVPContact.Presenter presenter) { this.mPresenter = presenter; } @Override public void showMessage(String message) { tvShow.setText(message); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mvp); init(); } private void init() { ButterKnife.bind(this); mPresenter = new MVPPresenter(this); } @OnClick({ R.id.btn_get }) public void click(View view){ switch (view.getId()){ case R.id.btn_get: mPresenter.get(); break; } } }
大功告成!
总结:
这是一个简单的DEMO,是不是觉得本来一句代码tv.setText()就搞定的问题,为什么弄的这么复杂?我们多创建了Contact、BaseView、BasePresenter、MVPPresenter四个类。确实增加了代码量,但同时,我们将业务逻辑的处理都放在了Presenter中,Activity视作View层只负责数据的展示,提高了代码的可维护性。试想如果不是简单的一个功能,而是非常多的网络请求、读取数据库、计算等业务,我们可以在Presenter中很方便的去进行维护,而不是看着臃肿的Activity欲哭无泪。
相关文章推荐
- android mvp 学习笔记(一)
- 学习笔记:Android里面的MVC模式与MVP模式
- Android 官方示例:android-architecture 学习笔记(六)之todo-mvp-contentproviders
- Android 官方示例:android-architecture 学习笔记(七)之todo-mvp-dagger
- Android 官方示例:android-architecture 学习笔记(二)之todo-mvp
- Android-缓存网络图片(MVP模式)学习笔记
- Android 官方示例:android-architecture 学习笔记(三)之todo-mvp-loaders
- Android中MVC与MVP学习笔记
- Android 官方示例:android-architecture 学习笔记(五)之todo-mvp-clean
- Android(OPhone) 学习笔记 - Intent和Activity(2)
- Android(OPhone) 学习笔记 - Hierarchy Viewer
- Android(OPhone) 学习笔记 - 地图(3)
- android 学习笔记(一)
- Android(OPhone) 学习笔记 - 定位(1)
- Android(OPhone) 学习笔记 - SQLite
- Android(OPhone) 学习笔记 - 资源的访问和配置
- Android(OPhone) 学习笔记 - 地图 (4)
- Android(OPhone) 学习笔记 - 菜单使用
- Android(OPhone) 学习笔记 - ListView + array
- Android(OPhone) 学习笔记 - 按钮响应