依赖:
compile 'io.reactivex.rxjava2:rxjava:2.0.2' compile 'io.reactivex.rxjava2:rxandroid:2.0.2' compile 'com.squareup.retrofit2:retrofit:2.0.2' // Retrofit库 compile 'com.squareup.okhttp3:okhttp:3.1.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.okhttp3:logging-interceptor:3.5.0' //compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' compile'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
Interface:
BaseView
package com.example.lijie.view.interfaces; public interface BaseView { }
MainView
package com.example.lijie.view.interfaces; import com.example.lijie.model.bean.Bean; import java.util.List; public interface MainView extends BaseView{ void onSuccess(List<Bean.DataBean> list); }
Retrofit:
RetrofitUtils
package com.example.lijie.model.http; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitUtils { private final Retrofit build; private static RetrofitUtils retrofitUtils; private RetrofitUtils(){ build = new Retrofit.Builder().baseUrl(Constant.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); } public static RetrofitUtils getInstace() { if (retrofitUtils==null) { retrofitUtils = new RetrofitUtils(); } return retrofitUtils; } public RetrofitApi getservice(){ return build.create(RetrofitApi.class); } }
Constant
package com.example.lijie.model.http; public class Constant { public static final String BASE_URL="https://www.zhaoapi.cn/"; }
RetrofitApi
package com.example.lijie.model.http;
public interface RetrofitApi { @GET("quarter/getAd") Observable<BannerBean> bannerShow(); }
Bean:
自己解析:https://www.zhaoapi.cn/product/getCarts?uid=71
Presenter:
BasePresenter
package com.example.lijie.presenter; import com.example.lijie.view.interfaces.BaseView; public class BasePresenter<P extends BaseView> { private P mBaseView; public void attacthView(P iBaseView){ this.mBaseView=iBaseView; } public P getView(){ return mBaseView; } public void detachView(){ mBaseView=null; } }
MainPresenter
package com.example.lijie.presenter; import com.example.lijie.model.bean.Bean; import com.example.lijie.model.http.RetrofitUtils; import com.example.lijie.view.interfaces.MainView; import java.util.List; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; public class MainPresneter extends BasePresenter<MainView>{ private final RetrofitUtils retrofitUtils; public MainPresneter(){ retrofitUtils = RetrofitUtils.getInstace(); } public void loadDataFrom(int id){ Observable<Bean> data = retrofitUtils.getservice().Koo(id); data.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Bean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Bean bean) { List<Bean.DataBean> lijie = bean.getData(); getView().onSuccess(lijie); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }
BaseActivity
package com.example.lijie.view.activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.lijie.presenter.BasePresenter; import com.example.lijie.view.interfaces.BaseView; public abstract class BaseActivity<V extends BasePresenter> extends AppCompatActivity implements BaseView{ public V presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(child()); initView(); initBaseData(); initData(); } private void initBaseData() { presenter = setPresenter(); if (presenter!=null){ presenter.attacthView(this); }else{ try { throw new Exception("哈哈哈哈哈哈"); } catch (Exception e) { e.printStackTrace(); } } } abstract void initView(); abstract void initData(); abstract int child(); abstract V setPresenter(); }
MainActivity
package com.example.lijie.view.activity; import android.os.Bundle; import android.util.Log; import com.example.lijie.R; import com.example.lijie.model.bean.Bean; import com.example.lijie.presenter.MainPresneter; import com.example.lijie.view.interfaces.MainView; import java.util.List; public class MainActivity extends BaseActivity<MainPresneter> implements MainView{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); } @Override void initView() { } @Override void initData() { } @Override int child() { return R.layout.activity_main; } @Override MainPresneter setPresenter() { return null; } @Override protected void onDestroy() { super.onDestroy(); presenter.detachView(); } @Override public void onSuccess(List<Bean.DataBean> list) { Log.e("===",list+""); } }