//所需要的依赖
compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'//权限
<uses-permission android:name="android.permission.INTERNET"/>
==================================Beanpublic class Bean { /** * msg : 登录成功 * code : 0 * data : {"age":null,"appkey":"4c17d9250210436d","appsecret":"7C64369D117C7B71AD3F164D6069DF89","createtime":"2018-01-10T11:13:51","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13522483483","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"30D75B8E7ED2E8A1807D75692DC1F635","uid":11364,"userId":null,"username":"13522483483"} */ public String msg; public String code; public Data.DataBean data; public static class DataBean { /** * age : null * appkey : 4c17d9250210436d * appsecret : 7C64369D117C7B71AD3F164D6069DF89 * createtime : 2018-01-10T11:13:51 * email : null * fans : null * follow : null * gender : null * icon : null * latitude : null * longitude : null * mobile : 13522483483 * money : null * nickname : null * password : 8F669074CAF5513351A2DE5CC22AC04C * praiseNum : null * token : 30D75B8E7ED2E8A1807D75692DC1F635 * uid : 11364 * userId : null * username : 13522483483 */ public Object age; public String appkey; public String appsecret; public String createtime; public Object email; public Object fans; public Object follow; public Object gender; public Object icon; public Object latitude; public Object longitude; public String mobile; public Object money; public Object nickname; public String password; public Object praiseNum; public String token; public int uid; public Object userId; public String username; } }=============================Data
public class Data { /** * msg : 获取用户信息成功 * code : 0 * data : {"age":null,"appkey":"80d9a01dba3aada5","appsecret":"17CDCE48FBB3D9CEA6A1599300A7CBC8","createtime":"2017-11-17T13:41:35","email":null,"fans":0,"follow":0,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13509090909","money":null,"nickname":null,"password":"94E3FA7E637B0803B4034D7B1B165B83","praiseNum":null,"token":"B4AD76A4EBC068AF6376DCC03C5EFAF4","uid":1135,"userId":null,"username":"13509090909"} */ public String msg; public String code; public DataBean data; public static class DataBean { /** * age : null * appkey : 80d9a01dba3aada5 * appsecret : 17CDCE48FBB3D9CEA6A1599300A7CBC8 * createtime : 2017-11-17T13:41:35 * email : null * fans : 0 * follow : 0 * gender : null * icon : null * latitude : null * longitude : null * mobile : 13509090909 * money : null * nickname : null * password : 94E3FA7E637B0803B4034D7B1B165B83 * praiseNum : null * token : B4AD76A4EBC068AF6376DCC03C5EFAF4 * uid : 1135 * userId : null * username : 13509090909 */ public Object age; public String appkey; public String appsecret; public String createtime; public Object email; public int fans; public int follow; public Object gender; public Object icon; public Object latitude; public Object longitude; public String mobile; public Object money; public Object nickname; public String password; public Object praiseNum; public String token; public int uid; public Object userId; public String username; } }========================================WL
public class WL { /** * msg : 注册成功 * code : 0 */ public String msg; public String code; }===============================MyApi
public class MyApi { public final static String url="http://120.27.23.105/user/"; }======================================MyService
public interface MyService { @GET("reg") Observable<WL> getWL(@Query("mobile")String mobile, @Query("password")String password); @GET("login") Observable<Bean> getBean(@Query("mobile")String mobile, @Query("password")String password); @GET("getUserInfo") Observable<Data> getData(@Query("uid")String uid); } =================================M层==================================ModelPortpublic interface ModelPort { void getUser(String phone, String pass); }========================================Model2Port
public interface Model2Port { void get(String phone, String pass); }===========================================ModelToos
public class ModelToos implements ModelPort { OnFinish onFinish; public ModelToos(OnFinish onFinish) { this.onFinish = onFinish; } @Override public void getUser(String phone,String pass) { Retrofit retrofit=new Retrofit.Builder() .baseUrl(MyApi.url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); MyService service=retrofit.create(MyService.class); Observable<WL> wl = service.getWL(phone, pass); wl.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<WL>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(WL wl) { onFinish.finish(wl); } }); } public interface OnFinish{ void finish(WL wl); } }========================================Model2Toos
public class Model2Toos implements Model2Port { private Onfinish2 onfinish2; public Model2Toos(Onfinish2 onfinish2) { this.onfinish2 = onfinish2; } @Override public void get(String phone, String pass) { Retrofit retrofit=new Retrofit.Builder() .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl(MyApi.url) .build(); MyService service=retrofit.create(MyService.class); Observable<Bean> data=service.getBean(phone,pass); data.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { onfinish2.finish(bean); } }); } public interface Onfinish2{ void finish(Bean bean); } }====================================V层======================================ViewPort
public interface ViewPort { void show(WL wl); }====================================登录的布局========================================VIew2Port
public interface VIew2Port { void show(Bean bean); }=======================================P层================================================PrensentToos
public class PrensentToos implements ModelToos.OnFinish { ModelToos toos; ViewPort port; public PrensentToos(ViewPort port) { this.port = port; toos=new ModelToos(this); } public void getData(String phone,String pass){ toos.getUser(phone,pass); } @Override public void finish(WL wl) { Log.d("+++++++++++++",wl.msg); port.show(wl); } }=========================================Present2Toos
public class Present2Toos implements Model2Toos.Onfinish2 { VIew2Port port2; Model2Toos toos2; public Present2Toos(VIew2Port port2) { this.port2 = port2; toos2=new Model2Toos(this); } public void getUser(String name,String pass){ toos2.get(name,pass); } @Override public void finish(Bean bean) { port2.show(bean); } }======================================Activity========================================登录MainActivity===============================注册Activitypublic class MainActivity extends AppCompatActivity implements View.OnClickListener,VIew2Port { private EditText mPhone; private EditText mPass; private Button mDc; private Button mZc; private Present2Toos toos2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mPhone = (EditText) findViewById(R.id.phone); mPass = (EditText) findViewById(R.id.pass); mDc = (Button) findViewById(R.id.dc); mDc.setOnClickListener(this); mZc = (Button) findViewById(R.id.zc); mZc.setOnClickListener(this); toos2=new Present2Toos(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dc: // TODO 18/01/10 String name=mPhone.getText().toString().trim(); String pass=mPass.getText().toString().trim(); if (name!=null){ if (pass!=null){ //13522481234 toos2.getUser(name,pass); }else { Toast.makeText(this,"请输入密码",Toast.LENGTH_LONG).show(); } }else { Toast.makeText(this, "请输入账号", Toast.LENGTH_LONG).show(); } break; case R.id.zc: // TODO 18/01/10 startActivity(new Intent(this,ZhuceActivity.class)); break; default: break; } } @Override public void show(Bean bean) { if (bean.code.equals("0")) { Toast.makeText(this, bean.msg, Toast.LENGTH_LONG).show(); Intent intent = new Intent(MainActivity.this, ShangpinActivity.class); intent.putExtra("uid", bean.data.uid + ""); startActivity(intent); } } }public class ZhuceActivity extends AppCompatActivity implements ViewPort, View.OnClickListener{ private EditText mPhone; private EditText mPass; private Button mZc2; private PrensentToos toos; private TextView tv; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhuce); initView(); } private void initView() { mPhone = (EditText) findViewById(R.id.phone); mPass = (EditText) findViewById(R.id.pass); mZc2 = (Button) findViewById(R.id.zc2); tv = (TextView) findViewById(R.id.tv); mZc2.setOnClickListener(this); toos=new PrensentToos(this); } @Override public void show(WL wl) { if(wl.code.equals("0")) { startActivity(new Intent(ZhuceActivity.this,MainActivity.class)); Toast.makeText(this,wl.msg, Toast.LENGTH_LONG).show(); finish(); } else { Toast.makeText(this,wl.msg, Toast.LENGTH_LONG).show(); } tv.setText(wl.msg); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.zc2: // TODO 18/01/10 String name=mPhone.getText().toString().trim(); String pass=mPass.getText().toString().trim(); if (name!=null){ if (pass!=null){ toos.getData(name,pass); }else { Toast.makeText(this,"请输入密码",Toast.LENGTH_LONG).show(); } }else { Toast.makeText(this, "请输入账号", Toast.LENGTH_LONG).show(); } break; default: break; } } }<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.chenrong.dlactivity.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/phone" android:hint="请输入用户名"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/pass" android:hint="请输入密码"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="登陆" android:id="@+id/dc"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="注册" android:id="@+id/zc"/> </LinearLayout> </LinearLayout>
=================================注册的布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.chenrong.dlactivity.ZhuceActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/phone" android:hint="请输入用户名"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/pass" android:hint="请输入密码"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="立即注册" android:id="@+id/zc2"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> </LinearLayout>