首页天道酬勤,

,

张世龙 05-04 04:01 28次浏览

安卓MVP模式学习参考:

安卓MVP开发模式有哪些优缺点? https://www.zhi Hu.com/question/35185744

MVP模式的友好介绍方法: http://kaedea.com/2015/10/11/Android-MVP-pattern /

MVP in Android:http://blog.csdn.net/lmj 623565791/article/details/46596109

安卓开发中的MVP模式已经出现很久了,网上的资料也很多,虽然看过很多,但我觉得自己并不深刻理解MVP模式的精髓。

在工程设计中,刚开始使用MVP模式进行开发的时候,我很不习惯,但是经过一段时间的实践,现在我渐渐懂得了开发方法。

MVP模式的使用其实很简单,但背后蕴含着深刻的思想。 把这篇文章记录下来,让它在实践中更容易查找

主要内容:

MVP模式原理MVP模式与用户注册和MVP模式相结合viewpagertablayoutfragmentrecyclerview工程代码和其他MVP模式原理百度百科: MVP

维基百科:模型视图presenter

MVP全名: Model - View - Presenter

模型表示数据层,视图表示视图层,Presenter表示逻辑处理层

在MVP模式下

View不直接与Model交互,View在Presenter中将前端数据传递给Model,或在Presenter中从Model检索数据。 View和Model的所有交互都发生在Presenter中,View负责前端展示和用户交互,Model负责数据存储和调用的好处。 可以有效地解除工程,分为各个独立的模块,功能明确,有利于复用,在调试过程中能够快速识别错误

缺陷:增加代码工作量

要与MVP模式协作实现用户登录界面,请执行以下操作:

用于保存用户名和密码的新登录对象登录

数据有两个处理。 1 -清除数据; 2 -验证登录,放入Presenter完成

视图有两个处理。 1 -清空编辑框; 2 -登录成功则跳转,否则提示登录错误

Note :以下是重要代码。 完整的工程链接在文章的末尾

在类MainContract中包含接口:

publicclassmaincontract { publicinterfaceviewextendsbaseviewpresenter } voidclearedit (; 语音登录(boolean islogin,String username,String pwd ); } publicinterfacepresenterextendsbasepresenter { voiddoclear (voiddologin (字符串用户名称,字符串pwd ); 在Presenter中实现Model和View的对话:

publicclassmainpresenterimplementsmaincontract.presenter { main contract.viewvmain; publicmainpresenter (main contract.view view ) { vMain=view; vmain.setpresenter(this; } @Override public void doClear () { vMain.clearEdit ); } @ overridepublicvoiddologin (string username,String pwd ) { vMain.onLoading ('正在验证.'); 布尔标志=假; if(username.equals(ZJ ) ) pwd.equals (123456 ) ) { flag=true; } vMain.loadingComplete (); vmain.login(flag,username,pwd ); }} View实现前端展示和用户交互:

publicclassmainactivityextendsbaseactivityimplementsmaincontract.view { publicstaticfinalstringtag=main activity.class.} @bindview(r.id.password ) EditText password; @bindview(r.id.clear ) Button clear; @bindview(r.id.login ) Button login; privatemaincontract.presenter presenter; @ overrideprotectedvoidoncreate (bundlesavedinstancestate ) super.oncreate ) savedinstancestate; setcontentview (r.layout.activity _ main; Butterknife.bind(this; newmainpresenter(this; }@onclick(r.id.clear,R.id.login} ) publicvoidonviewclicked (view ) switch (view.getid ) ) caser break; caser.id.log in : string username=user.gettext ().toString ); String pwd=password.getText ().toString ); presenter.dologin(username,pwd ); 布雷克; } @ overridepublicvoidsetpresenter (主contract.presenter presenter ) { this.presenter=presenter; } @ overridepublicvoidonloading (字符串文本) showloading ) text; } @ overridepublicvoidloadingcomplete () { hideLoading ); } @ overridepublicvoidloadingerror (字符串错误) { } @Override public void clearEdit ) (user.settext ) null ); password.settext (空); user.requestFocus (; } @ overridepublicvoidlogin (布尔型islogin,String username,String pwd ) log.e ) tag,' onviewclicked 3360 user=' user if logi NLG=newl ogin (用户名称,pwd ); intentintent=newintent(this,Main2Activity.class; intent.putextra('login ',new Gson ) (.toJSON ) ) LG ); 开始活动(intent; }else{toast.maketext(this,'登录失败',Toast.LENGTH_SHORT ).show ); } }与MVP模式结合使用以实现viewpagertablayoutfragmentrecyclerview类似于在fragment中实现MVP模式和活动。 用户登录成功后,跳转到(User: zj、pwd: 123456 )数据展示界面

展示界面如下。

工程代码及其他

其实我对MVP还知道一半,但我会先记录下来,然后慢慢补充

完整的工程链接: MVPDemo

Android封装怎么用,androidview封装