开发一个好项目:七、创建Contract类,连接presenter和view
来源:互联网 发布:上证指数如何计算 知乎 编辑:程序博客网 时间:2024/05/23 17:25
前一篇文章:开发一个好项目:六、创建数据源,创建数据仓库 框架地址 dileber android框架 希望大家能多多star一下
Contract类帮助presenter和view进行一个连接的操作
View继承于BaseView (中含有一些公用的方法)
Presenter 继承于BasePresenter(中含有一些公用的方法)
注释我也写的很清楚,可以看一下。
public interface LoginContract { interface View extends BaseView<Presenter>{ //跳转主页 void toHome(); //获取页面上的用户model UserModel getUser(); } interface Presenter extends BasePresenter{ //从数据仓库里验证用户是否可以登录 void checkUser(); //拿到当前用户登录后的信息 void getUser(); }}
接下来创建一个presenter 继承LoginContract.Presenter
再创建一个View(view有两种,目前可知道的是Fragment和Activity)继承LoginContract.View
现在这里创建一个Presenter,下一章节再创建View(关联的东西比较多,此章不多做介绍)
mView.setPresenter(this); 将presenter给view设置
mUserDataSource设置dataSource
public class LoginPresenter implements LoginContract.Presenter{ LoginContract.View mView; UserRepository mUserDataSource; public LoginPresenter(@NonNull LoginContract.View view, @NonNull UserDataSource userDataSource){ mView = view; mUserDataSource = userDataSource; mView.setPresenter(this); } @Override public void checkUser() { final UserModel userModel = mView.getUser(); if(userModel==null){ mView.toast("用户为空", Toast.LENGTH_SHORT); return; } final String userName = userModel.getUsername(); final String pass = userModel.getUserpass(); if(!UText.checkEditText(userName,6)||!UText.checkEditText(pass,6)){ mView.toast("账号或密码不能小于6位数", Toast.LENGTH_SHORT); return; } checkUser(userModel); } private void checkUser(final UserModel userModel){ mView.loading(); mUserDataSource.checkUser(userModel, new BaseDataSource.BaseCallback<UserWrapper>() { @Override public void onSuccess(UserWrapper userWrapper) { if(userWrapper.getState()== NetWorkEnum.Success.getVar()){ UserModel userModel1 = userWrapper.getData(); if(userModel1==null){ mView.showAlert(UDialog.DIALOG_ERROR,"用户异常"); mUserDataSource.clearUser(); }else{ userModel1.setUserpass(userModel.getUserpass()); mUserDataSource.saveUser(userModel1); login(String.valueOf(userModel.getUserid()),HSafe.getHashValue(userModel.getUserpass()+HSafe.getHashValue(userModel.getUsername(), HSafe.HashMethod.sha1), HSafe.HashMethod.sha1)); toHome(userModel1); } }else if(userWrapper.getState()==NetWorkEnum.Error.getVar()){ mView.showAlert(UDialog.DIALOG_ERROR,userWrapper.getMsg()); mUserDataSource.clearUser(); } mView.loadDialogDismiss(); } @Override public void onFailure(DataSourceException e) { mView.showAlert(UDialog.DIALOG_ERROR,e.getMessage()); mView.loadDialogDismiss(); mUserDataSource.clearUser(); } }); } @Override public void getUser() { mUserDataSource.getUser(new BaseDataSource.BaseCallback<UserModel>() { @Override public void onSuccess(UserModel userModel) { toHome(userModel); } @Override public void onFailure(DataSourceException e) { } }); } private void toHome(UserModel userModel){ mView.toHome(); mView.toast("欢迎" + userModel.getUsername(), Toast.LENGTH_SHORT); } @Override public void start() { } @Override public void onDestroy() { }}
0 0
- 开发一个好项目:七、创建Contract类,连接presenter和view
- 开发一个好项目:八、创建view
- Android官方TODO-MVP项目分析(上)---View 层 Presenter 层以及 Contract 分析
- IntraWeb下Model-View-Presenter开发实战--创建篇之二(Presenter)
- IntraWeb下Model-View-Presenter开发实战--创建篇之一 (View)
- 开发一个好项目:五、创建数据源,创建网络数据Service和网络数据源
- 开发一个好项目:六、创建数据源,创建数据仓库
- IntraWeb下Model-View-Presenter开发实战--创建篇之三(Model)
- Android开发:创建自定义视图–创建一个View类
- 电商项目 简单的mvp 适合出学者 view层和presenter层的接口回调
- 开发一个好项目:三、创建数据源,首先创建本地数据源
- IntraWeb下Model-View-Presenter开发实战--起始篇
- 浅析MVP(Model-View-Presenter)架构及开发模式
- Model View Presenter
- 开发一个好项目:二、actvity简便跳转,创建菜单按钮,正确使用fragment
- iOS开发 从一个空项目创建ViewController和xib
- iOS开发 从一个空项目创建ViewController和xib
- 设计模式:Model View Presenter
- http://me.rice.edu/~akin/
- Android 属性动画(Property Animation)
- DTD与XSD的一个范例
- Memcached java client使用中的问题
- MPMoviePlayerController全屏模式下横屏与竖屏切换
- 开发一个好项目:七、创建Contract类,连接presenter和view
- RxJava操作符实践:3_转换操作之_toMap
- 文件过长无法删除
- 数据库授权操作
- 代码优化(转)
- Android 事件分发机制总结
- mssql 查看编码
- mysql按ip查看连接数
- Laravel框架数据库CURD操作、连贯操作总结