前一篇文章:开发一个好项目:六、创建数据源,创建数据仓库 框架地址 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() {
}
}
点击查看更多内容
1人点赞
0 评论
共同学习,写下你的评论
暂无评论
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦