Android 使用mvp实现登录

在这里插入图片描述

IBaseView

public interface IBaseView {

    void onDataSuccess();
    void onDataFailer();
    void show();
    void hide();
}

BaseBiz

public class BaseBiz {
}

BasePresenter

public abstract class BasePresenter {

    private IBaseView iBaseView;
    private Context context;

    public BasePresenter(IBaseView iBaseView) {
        this.iBaseView = iBaseView;
    }

    public BasePresenter(Context context) {
        this.context = context;
    }

    public void attached(IBaseView iBaseView){
        this.iBaseView = iBaseView;
    }

    //释放资源,防止资源泄露
    public void onDetached(){
        this.iBaseView = null;
        this.context = null;
    }

    public IBaseView getView() {
        return iBaseView;
    }

    public Context getContext() {
        return context;
    }
}

BaseActivity

public abstract class BaseActivity extends AppCompatActivity {

    private BasePresenter basePresenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int layoutId = initLayoutId();
        if (layoutId != 0){
            setContentView(layoutId);
            initView();
            initData();
            initListener();
        }else {
            finish();
        }
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        basePresenter = initPresenter();
        basePresenter.attached(initIView());
    }

    @Override
    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        basePresenter.onDetached();
        basePresenter = null;
    }

    //初始化控件
    public abstract void initView();

    //初始化数据
    public abstract void initData();

    //初始化布局文件
    public abstract int initLayoutId();

    //初始化各种监听
    public abstract void initListener();

    //初始化presenter
    public abstract BasePresenter initPresenter();

    //初始化view接口
    public abstract IBaseView initIView();
}

LoginView

public interface LoginView extends IBaseView {

    //参照异常方法
    void onParamIllegal();

}

LoginBiz

public class LoginBiz extends BaseBiz {

    //新建一个类
    public void login(final String name, final String password, final LoginCallBack callBack) {
        new AsyncTask<String, Void, String>() {
            @Override
            protected String doInBackground(String... strings) {

                SystemClock.sleep(2500);

                if (name.contains("111") && password.contains("111")){
                    return "成功";
                }else {
                    return "失败";
                }
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (s.contains("成功")){
                    callBack.onLoginSuccess("登录成功");
                }else {
                    callBack.onLoginFailer("登录失败");
                }
            }
        }.execute();
    }
}

LoginPresenter

public class LoginPresenter extends BasePresenter {

    private LoginBiz loginBiz;

    public LoginPresenter(Context context) {
        super(context);
        loginBiz = new LoginBiz();
    }

    public void Login(String name,String password){
        final LoginView view = (LoginView) getView();

        if (TextUtils.isEmpty(name)||TextUtils.isEmpty(password)){
            view.onParamIllegal();
            return;
        }
        view.show();
        loginBiz.login(name, password, new LoginCallBack() {
            @Override
            public void onLoginSuccess(String result) {
                view.onDataSuccess();
                view.hide();
            }

            @Override
            public void onLoginFailer(String msg) {
                view.onDataFailer();
                view.hide();
            }
        });
    }
}

LoginCallBack

public interface LoginCallBack {

    void onLoginSuccess(String result);
    void onLoginFailer(String msg);

}

MainActivity继承BaseActivity实现LoginView

public class MainActivity extends BaseActivity implements LoginView {

    private EditText name;
    private EditText password;
    private Button login;
    private ProgressBar progressBar;

    private LoginPresenter loginPresenter;

    @Override
    public void initView() {
        name = (EditText) findViewById(R.id.name);
        password = (EditText) findViewById(R.id.passowrd);
        login = (Button) findViewById(R.id.login);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
    }

    @Override
    public void initData() {

    }

    @Override
    public int initLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    public void initListener() {
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String userName = name.getText().toString();
                String pwd = password.getText().toString();

                loginPresenter.Login(userName, pwd);
            }
        });
    }

    @Override
    public BasePresenter initPresenter() {
        loginPresenter = new LoginPresenter(this);
        return loginPresenter;
    }

    @Override
    public IBaseView initIView() {
        return this;
    }

    @Override
    public void onParamIllegal() {
        Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDataSuccess() {
        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDataFailer() {
        Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void show() {
        progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void hide() {
        progressBar.setVisibility(View.GONE);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值