//导的base库 implementation project(':base') //okhttp implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' //rxjava implementation 'io.reactivex.rxjava2:rxjava:+' implementation 'io.reactivex.rxjava2:rxandroid:+' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' //ok的拦截器 implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' //版本转换
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '27.1.1' } } } //RetrofitFactory
public class RetrofitFactory { private final MyApi myApi; private static RetrofitFactory retrofitFactory; private RetrofitFactory() { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(5000, TimeUnit.SECONDS) .readTimeout(5000, TimeUnit.SECONDS) .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.xieast.com/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(okHttpClient) .build(); myApi = retrofit.create(MyApi.class); } public static RetrofitFactory getINSTANCE() { if (retrofitFactory == null) { synchronized (RetrofitFactory.class) { if (retrofitFactory == null) { retrofitFactory = new RetrofitFactory(); } } } return retrofitFactory; } public MyApi getMyApi() { return myApi; } }
//myapi public interface MyApi { @GET("api/news/news.php") Observable<JavaBean> getJavaBean(); }
//
Model
public class Model extends BaseModel { public void getJavabean(final IMyModel1 iMyView) { RetrofitFactory.getINSTANCE().getMyApi() .getJavaBean() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<JavaBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(JavaBean javaBean) { List<JavaBean.DataBean> data = javaBean.getData(); iMyView.onSuccess(javaBean); Log.i("zzzm",data.size()+""); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface IMyModel1 { void onSuccess(JavaBean javaBean); } }
//
Presenter
public class Presenter extends BasePresenter<Model,IMyView> { public void getJavaBean() { model.getJavabean(new Model.IMyModel1() { @Override public void onSuccess(JavaBean javaBean) { view.onSuccess(javaBean); } }); } }
//IMYview
public interface IMyView extends IBaseView { void onSuccess(JavaBean javaBean); void onfilg(); } view层
public class MainActivity extends BaseActivity<Presenter>implements IMyView { @Override protected void initDate() { presenter.getJavaBean(); } @Override protected BaseModel initModel() { return new Model(); } @Override protected Presenter initPresenter() { return new Presenter(); } @Override protected void initView() { } @Override protected int setChildView() { return R.layout.activity_main; } @Override public void onSuccess(JavaBean javaBean) { Toast.makeText(MainActivity.this,javaBean.getData().get(0).getTitle().toString(),Toast.LENGTH_SHORT).show(); } @Override public void onfilg() { Toast.makeText(MainActivity.this,"数据请求失败",Toast.LENGTH_SHORT).show(); } }