第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

開發(fā)一個(gè)好項(xiàng)目:七、創(chuàng)建Contract類,連接presenter和view

標(biāo)簽:
Android

前一篇文章:开发一个好项目:六、创建数据源,创建数据仓库 框架地址 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() {

    }
}
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
81
獲贊與收藏
3604

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消