MVp实现注册功能

实现步骤:

1. 实现分包功能

2.实现Bean类

3.在MVP包下的 model包下,创建RegModel类(用于联网请求数据)

4.在MVP包下的 View包下,创建LoginView类

5.在MVP包下的 View包下 创建activity包,里面书写RegActivity

6.在MVP包下创建presenter包,创建RegPresenter类

7.创建包base,里面分为三个类,分别是BaseActivity,BasePresenter,IView


//需要添加的依赖

1.OkHttp的    2.gson解析的   3.友盟

implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation files('libs/umeng-common-1.5.3.jar')

1.在MVP包下的 model包下,创建RegModel类(用于联网请求数据)

public class RegModel {

    //进行联网请求
    public void getDataReg(String mobile,String password,final onCallBackListener onCallBackListener){
        String url= HttpConfig.URL_REG;
        Map<String,String> map=new HashMap<>();
        map.put("mobile",mobile);
        map.put("password",password);
        OkhttpUtils.getInstance().doPost(url, map, new OkhttpUtils.onCallBack() {
            @Override
            public void onFaild(Exception e) {

            }

            @Override
            public void onResponse(String json) {
              //gson解析
                Gson gson = new Gson();
                LoginBean loginBean = gson.fromJson(json, LoginBean.class);
                String msg = loginBean.getMsg();
                String code = loginBean.getCode();

                if("0".equalsIgnoreCase(code)){

                    if(onCallBackListener!=null){
                        onCallBackListener.onSuccess(loginBean);
                    }
                }else{
                    if(onCallBackListener!=null){
                        onCallBackListener.onFaild(msg);
                    }
                }
            }
        });

    }

    //接口回调
    public interface onCallBackListener{

        void onSuccess(LoginBean loginBean);
        void onFaild(String error);
    }

}
2.在MVP包下的 View包下,创建LoginView类

public interface LoginView extends IView {

    void onSuccess(LoginBean loginBean);
    void onFaild(String error);

}

3.在MVP包下的 View包下 创建activity包,里面书写RegActivity

public class RegActivity extends BaseActivity<RegPresenter> implements View.OnClickListener,LoginView {


    private EditText password;
    private EditText mobile;
    private Button btn_reg;

    @Override
    protected void initData() {

    }

    @Override
    protected RegPresenter provides() {
        return new RegPresenter((LoginView) this) ;
    }

    @Override
    protected void initListener() {
        btn_reg.setOnClickListener(this);
    }

    @Override
    protected void initView() {
        mobile = findViewById(R.id.reg_mobile);
        password = findViewById(R.id.reg_password);
        btn_reg = findViewById(R.id.btn_reg);
    }

    @Override
    protected int provideId() {
        return R.layout.activity_reg;
    }

    @Override
    public void onClick(View v) {
        //获取输入框内容
        String m = mobile.getText().toString();
        String p = password.getText().toString();
        presenter.reg(m,p);
    }


    @Override
    public void onSuccess(LoginBean loginBean) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(RegActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onFaild(final String error) {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(RegActivity.this,"注册失败"+error,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

4.在MVP包下创建presenter包,创建RegPresenter类

public class RegPresenter extends BasePresenter<LoginView>{


    private RegModel regModel;

    public RegPresenter(LoginView view) {
        super(view);
    }

    @Override
    protected void initModel() {
        regModel = new RegModel();
    }


    public void reg(String mobile,String password){
       regModel.getDataReg(mobile, password, new RegModel.onCallBackListener() {
           @Override
           public void onSuccess(LoginBean loginBean) {
               if(view!=null){
                  view.onSuccess(loginBean);
               }
           }

           @Override
           public void onFaild(String error) {
                  if(view!=null){
                      view.onFaild(error);
                  }
           }
       });
    }
}

 
5.在Base里面创建IView

public interface IView {


}

6.在Base里面创建BasePresenter

public abstract class BasePresenter <V extends IView>{

  protected V view;

    public BasePresenter(V view) {
        this.view = view;
        initModel();
    }


    protected abstract  void initModel();

//解决内存泄漏
    void onDestory(){
        view=null;
    }


}

//在Base里面创建BaseActivity

public abstract class BaseActivity <P extends BasePresenter> extends AppCompatActivity{


    protected  P presenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(provideId());
        initView();
        initListener();
        //提供presenter
        presenter=provides();
        initData();
    }

    protected abstract void initData();

    protected abstract P provides();

    protected abstract void initListener();

    protected abstract void initView();

    protected abstract int provideId();

    //解决内存泄漏

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDestory();
    }
}



猜你喜欢

转载自blog.csdn.net/chenyibai/article/details/80709688