//登录接口 public static final String LOGIN_STRING = "https://www.zhaoapi.cn/user/login"; public static final String LOGIN_BASE = "https://www.zhaoapi.cn/";
//登录 @GET("user/login") io.reactivex.Observable<LoginBean> getLogin(@QueryMap HashMap<String,String> loginMap);
public interface LoginIConter { public interface LoginIView{ void LoginShowData(LoginBean loginBean); void onError(Throwable responseString); } public interface LoginIPresenter<LoginIView>{ void attachView(LoginIView loginIView); void datachView(LoginIView loginIView); void LoginResquestData(String userPhone,String password); } public interface LoginIModel{ public interface LoginCallBackListenter{ void LoginCallBack(LoginBean loginBean); void onFailer(Throwable throwable); } void LoginResponseData(String userPhone,String passsword,LoginCallBackListenter loginCallBackListenter); } }
public class LoginModel implements LoginIConter.LoginIModel { @Override public void LoginResponseData(String userPhone, String passsword, final LoginCallBackListenter loginCallBackListenter) { HashMap<String,String> hashMap = new HashMap<>(); hashMap.put("mobile",userPhone); hashMap.put("password",passsword); Observable<LoginBean> observable = Retrofitutil.getinstance().apiService(Contast.LOGIN_BASE).getLogin(hashMap); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<LoginBean>() { @Override public void accept(LoginBean loginBean) throws Exception { loginCallBackListenter.LoginCallBack(loginBean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { loginCallBackListenter.onFailer(throwable); } }); } }
public class LoginPresenter implements LoginIConter.LoginIPresenter<LoginIConter.LoginIView> { LoginIConter.LoginIView loginIView; private LoginModel loginModel; private WeakReference<LoginIConter.LoginIView> loginIViewWeakReference; private WeakReference<LoginModel> loginModelWeakReference; @Override public void attachView(LoginIConter.LoginIView loginIView) { this.loginIView = loginIView; loginModel = new LoginModel(); loginIViewWeakReference = new WeakReference<>(loginIView); loginModelWeakReference = new WeakReference<>(loginModel); } @Override public void datachView(LoginIConter.LoginIView loginIView) { loginIViewWeakReference.clear(); loginModelWeakReference.clear(); } @Override public void LoginResquestData(String userPhone, String password) { loginModel.LoginResponseData(userPhone, password, new LoginIConter.LoginIModel.LoginCallBackListenter() { @Override public void LoginCallBack(LoginBean loginBean) { loginIView.LoginShowData(loginBean); } @Override public void onFailer(Throwable throwable) { loginIView.onError(throwable); } }); } }
Activity
case R.id.button_login: //登录 editusernameLogin = editUsernameLogin.getText().toString(); editpasswordlogin = editPasswordLogin.getText().toString(); if(editusernameLogin.trim().length()!=11){ Toast.makeText(LoginActivity.this,"请输入正确的手机号",Toast.LENGTH_SHORT).show(); }else if(editpasswordlogin.trim().length()!=6){ Toast.makeText(LoginActivity.this,"密码错误,请重新输入",Toast.LENGTH_SHORT).show(); }else{ loginPresenter.LoginResquestData(editusernameLogin, editpasswordlogin); } break;
//成功的方法 @Override public void LoginShowData(LoginBean loginBean) { flag = false; uid = loginBean.getData().getUid(); if(loginBean.getCode().equals("0")){ String editUsernamelogin = editUsernameLogin.getText().toString(); flag = true; Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("editusernamelogin",editUsernamelogin); intent.putExtras(bundle); setResult(100,intent); finish(); Toast.makeText(LoginActivity.this,loginBean.getMsg(),Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(LoginActivity.this,loginBean.getMsg(),Toast.LENGTH_SHORT).show(); } EventBean eventBean = new EventBean(); eventBean.setUid(uid); eventBean.setFlag(flag); EventBus.getDefault().postSticky(eventBean); }