依赖:
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'com.android.support:recyclerview-v7:26.1.0' //注意版本 compile 'com.squareup.retrofit2:retrofit:2.0.1' // Okhttp库 compile 'com.squareup.okhttp3:okhttp:3.1.2' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' // Retrofit库 implementation 'com.squareup.retrofit2:retrofit:2.4.0' compile 'com.squareup.retrofit2:converter-gson:2.4.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' // rxjava+rxandroid+retrofit2+okhttp implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2.1.12' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.google.code.gson:gson:2.2.4' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'org.greenrobot:eventbus:3.0.0' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.facebook.fresco:fresco:0.12.0'
loginBean:
public class Loginbean { /** * appkey : c946bd788a382809 * appsecret : C738A026EEDD178A5A5F7946EB17C803 * createtime : 2018-04-29T10:19:40 * mobile : 17611525516 * password : 8F669074CAF5513351A2DE5CC22AC04C * token : ACA7FC85CBA7EFF22A0FD66F64CA98C2 * uid : 14179 * username : 17611525516 */ private String appkey; private String appsecret; private String createtime; private String mobile; private String password; private String token; private int uid; private String username; public String getAppkey() { return appkey; } public void setAppkey(String appkey) { this.appkey = appkey; } public String getAppsecret() { return appsecret; } public void setAppsecret(String appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
ApiService:
public interface ApiService { @GET("user/login") Observable<MessageBean<Loginbean>> getlogin(@Query("mobile")String mobile, @Query("password")String password); @GET("user/reg") Observable<MessageBean> getzc(@Query("mobile")String mobile, @Query("password")String password); }
ServiceURL:
public class ServiceURL { public static final String BASE_URL="https://www.zhaoapi.cn/"; }
HttpUtils
public class HttpUtils { private static volatile HttpUtils instance; private final OkHttpClient client; private final HttpLoggingInterceptor interceptor; private Retrofit retrofit; private HttpUtils(){ //日志拦截器 interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC); client = new OkHttpClient.Builder() .addInterceptor(interceptor) .build(); retrofit = new Retrofit.Builder() .baseUrl(ServiceURL.BASE_URL) .client(client) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); } public static HttpUtils getInstance(){ if(instance==null){ synchronized (HttpUtils.class){ if(instance==null){ instance = new HttpUtils(); } } } return instance ; } public ApiService getService(){ return retrofit.create(ApiService.class); } }
IPresenter:
public interface IPresenter<T> { void OnReceive(T t); }
IView:
public interface IView<T> { void OnSuccess(T t); }
LoginModel:
public class LoginModel { IPresenter iPresenter; public LoginModel(IPresenter iPresenter){ this.iPresenter=iPresenter; } public void getData(String mobile,String password){ HttpUtils.getInstance().getService() .getlogin(mobile, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<MessageBean<Loginbean>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(MessageBean<Loginbean> loginbeanMessageBean) { iPresenter.OnReceive(loginbeanMessageBean); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }
ZcModel:
public class ZcModel { IPresenter iPresenter; public ZcModel(IPresenter iPresenter){ this.iPresenter=iPresenter; } public void getData(String mobile, String password, final IPresenter iPresenter){ HttpUtils.getInstance().getService() .getzc(mobile, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<MessageBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(MessageBean messageBean) { iPresenter.OnReceive(messageBean); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }
Loginpresenter :
public class Loginpresenter implements IPresenter<MessageBean<Loginbean>> { Context context; IView iView; private final LoginModel loginModel1; public Loginpresenter(Context context,IView iView){ this.context=context; this.iView=iView; loginModel1 = new LoginModel(this); } public void getData(String mobile,String password){ if(!TextUtils.isEmpty(mobile)&&!TextUtils.isEmpty(password)){ loginModel1.getData(mobile,password); }else{ Toast.makeText(context,"手机密码不能为空",Toast.LENGTH_SHORT).show(); } } @Override public void OnReceive(MessageBean<Loginbean> loginbeanMessageBean) { String code = loginbeanMessageBean.getCode(); if(code.equals("0")){ iView.OnSuccess(loginbeanMessageBean); }else{ Toast.makeText(context,loginbeanMessageBean.getMsg(),Toast.LENGTH_SHORT).show(); } } }
Zcpresenter :
public class Zcpresenter implements IPresenter<MessageBean> { LoginModel loginModel; Context context; IView iView; ZcModel zcModel; public Zcpresenter(Context context,IView iView){ this.context=context; this.iView=iView; zcModel = new ZcModel(this); } public void getData(String mobile,String password,String passwordTwo, String mile){ if(!TextUtils.isEmpty(mobile)&&!TextUtils.isEmpty(password)&&!TextUtils.isEmpty(passwordTwo)&&!TextUtils.isEmpty(mile)){ if(password.equals(passwordTwo)){ }else { Toast.makeText(context, "两次密码不一致", Toast.LENGTH_SHORT).show(); } zcModel.getData(mobile,password,this); }else { //如果是空值,则吐司 Toast.makeText(context, "信息不能为空", Toast.LENGTH_SHORT).show(); } } @Override public void OnReceive(MessageBean zcbeanMessageBean) { String code = zcbeanMessageBean.getCode(); if(code.equals("0")){ iView.OnSuccess(zcbeanMessageBean); }else { //注册失败,吐司 Toast.makeText(context, zcbeanMessageBean.getMsg(), Toast.LENGTH_SHORT).show(); } } }
MainActivity:
public class MainActivity extends AppCompatActivity implements IView<MessageBean<Loginbean>> { @BindView(R.id.imageone) ImageView imageone; @BindView(R.id.user) EditText user; @BindView(R.id.pass) EditText pass; @BindView(R.id.wjmm) TextView wjmm; @BindView(R.id.zc) TextView zc; @BindView(R.id.dl) Button dl; private String username; private String password; Loginpresenter loginpresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); loginpresenter = new Loginpresenter(this, this); } @Override public void OnSuccess(MessageBean<Loginbean> loginbeanMessageBean) { Intent intent = new Intent(MainActivity.this, Main2Activity.class); startActivity(intent); } @OnClick({R.id.wjmm, R.id.zc, R.id.dl}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.wjmm: break; case R.id.zc: Intent intent = new Intent(MainActivity.this, Main3Activity.class); startActivity(intent); break; case R.id.dl: username = user.getText().toString(); password = pass.getText().toString(); loginpresenter.getData(username,password); break; } } }
Main3Activity
public class Main3Activity extends AppCompatActivity implements IView<MessageBean> { @BindView(R.id.re_return) Button reReturn; @BindView(R.id.re_mobile) EditText reMobile; @BindView(R.id.re_password) EditText rePassword; @BindView(R.id.re_password_two) EditText rePasswordTwo; @BindView(R.id.regist_mile) EditText registMile; @BindView(R.id.re_but) Button reBut; Zcpresenter zcpresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); ButterKnife.bind(this); zcpresenter = new Zcpresenter(this, this); } @OnClick(R.id.re_but) public void onViewClicked() { //得到控件上的值用户名,密码,邮箱 String mobile = reMobile.getText().toString(); String password = rePassword.getText().toString(); String passwordTwo = rePasswordTwo.getText().toString(); String mile = registMile.getText().toString(); //调用p层netRegistUser方法 zcpresenter.getData(mobile,password,passwordTwo,mile); } @Override public void OnSuccess(MessageBean messageBean) { Toast.makeText(this, "注册成功后跳到登录页面", Toast.LENGTH_SHORT).show(); try { Thread.sleep(3333); //当前activity销毁 finish(); } catch (InterruptedException e) { e.printStackTrace(); }} }