注册MVP
public static final String ZHUCE_STRING = "https://www.zhaoapi.cn/user/reg"; public static final String ZHUCE_BASE = "https://www.zhaoapi.cn/";
@GET("user/reg") io.reactivex.Observable<RegBean> getZhuCe(@QueryMap HashMap<String,String> regMap);
public interface RegIConter { public interface RegIView{ void RegShowData(RegBean regBean); void OnError(Throwable responseString); } public interface RegIPresenter<RegIView>{ void attachView(RegIView regIView); void datachView(RegIView regIView); void RegRequestData(String userphone,String password); } public interface RegIModel{ public interface RegCallBackListenter{ void RegCallBack(RegBean regBean); void onFailer(Throwable throwable); } void RegResponseData(String userphone,String password,RegCallBackListenter regCallBackListenter); }
public class RegModel implements RegIConter.RegIModel { @SuppressLint("CheckResult") @Override public void RegResponseData(String userphone, String password, final RegCallBackListenter regCallBackListenter) { HashMap<String,String> map = new HashMap<>(); map.put("mobile",userphone); map.put("password",password); Observable<RegBean> observable = Retrofitutil.getinstance().apiService(Contast.ZHUCE_BASE).getZhuCe(map); observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<RegBean>() { @Override public void accept(RegBean regBean) throws Exception { regCallBackListenter.RegCallBack(regBean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { regCallBackListenter.onFailer(throwable); } }); } }
public class RegPresenter implements RegIConter.RegIPresenter<RegIConter.RegIView> { RegIConter.RegIView regIView; private RegModel regModel; private WeakReference<RegModel> regModelWeakReference; private WeakReference<RegIConter.RegIView> regIViewWeakReference; @Override public void attachView(RegIConter.RegIView regIView) { this.regIView = regIView; regModel = new RegModel(); regModelWeakReference = new WeakReference<>(regModel); regIViewWeakReference = new WeakReference<>(regIView); } @Override public void datachView(RegIConter.RegIView regIView) { regModelWeakReference.clear(); regIViewWeakReference.clear(); } @Override public void RegRequestData(String userphone,String password) { regModel.RegResponseData(userphone, password, new RegIConter.RegIModel.RegCallBackListenter() { @Override public void RegCallBack(RegBean regBean) { regIView.RegShowData(regBean); } @Override public void onFailer(Throwable throwable) { regIView.OnError(throwable); } }); } }
public class RegActivity extends AppCompatActivity implements RegIConter.RegIView { @BindView(R.id.reg_phone) EditText regPhone; @BindView(R.id.reg_password) EditText regPassword; @BindView(R.id.reg_zc) Button regZc; private RegIConter.RegIPresenter regPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reg); ButterKnife.bind(this); regPresenter = new RegPresenter(); regPresenter.attachView(this); } @Override protected void onDestroy() { super.onDestroy(); regPresenter.datachView(this); } @OnClick(R.id.reg_zc) public void onViewClicked() { String stringPhone = regPhone.getText().toString(); String regPassword = this.regPassword.getText().toString(); if(stringPhone.trim().length()!=11){ Toast.makeText(RegActivity.this,"请输入正确的手机号",Toast.LENGTH_SHORT).show(); }else if(regPassword.trim().length()!=6){ Toast.makeText(RegActivity.this,"密码必须定义为6位",Toast.LENGTH_SHORT).show(); }else{ regPresenter.RegRequestData(stringPhone,regPassword); } } @Override public void RegShowData(RegBean regBean) { if(regBean.getCode().equals("0")){ Intent intent = new Intent(RegActivity.this,LoginActivity.class); startActivity(intent); Toast.makeText(RegActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(RegActivity.this,"注册失败,该手机号已被注册",Toast.LENGTH_SHORT).show(); } } @Override public void OnError(Throwable responseString) { Toast.makeText(RegActivity.this,responseString+"",Toast.LENGTH_SHORT); } }