Retrofit+RxJava+MVP网络请求数据

RetrofitUtil

public class RetrofitUtil {
    private static volatile RetrofitUtil instance;
    private final Retrofit retrofit;

    private RetrofitUtil(String baseUrl){
        retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public static RetrofitUtil getInstance(String baseUrl){
        if (instance == null) {
            synchronized (RetrofitUtil.class){
                if (instance == null) {
                    instance = new RetrofitUtil(baseUrl);
                }
            }
        }
        return instance;
    }

    public Retrofit getRetrofit(){
        return retrofit;
    }
}
 

ApiService

public interface ApiService {
    @GET("ad/getAd")
    Flowable<Product> getProduct(@QueryMap Map<String,String> map);
}
 

IModel

 
public interface IModel {
    void getProduct(String baseUrl, Map<String,String> map, LoadNetListener loadNetListener);
}
 

ModelImpl

public class ModelImpl implements IModel {
    private static final String TAG = "ModelImpl";
    private DisposableSubscriber<Product> subscriber;

    @Override
    public void getProduct(String baseUrl, Map<String, String> map, final LoadNetListener loadNetListener) {
        Log.e(TAG, "getProduct: ---"+map.toString());
        Flowable<Product> flowable = RetrofitUtil.getInstance(baseUrl).getRetrofit().create(ApiService.class).getProduct(map);
        subscriber = (DisposableSubscriber)flowable.subscribeOn(Schedulers.io())//在io线程进行网络请求
                .observeOn(AndroidSchedulers.mainThread())//回到主线程请求结果
                .subscribeWith(new DisposableSubscriber(){
                    @Override
                    public void onNext(Object o) {
                        Log.e(TAG, "onNext: ----next");
                        loadNetListener.loadSuccess(o);
                    }

                    @Override
                    public void onError(Throwable t) {
                        Log.e(TAG, "onError: ----"+t.toString());
                        loadNetListener.loadFailed(t);
                    }

                    @Override
                    public void onComplete() {
                        Log.e(TAG, "onComplete: ----complete");
                    }
                });

    }
}
 

IView

public interface IView {
    void getData(Object o);
    void getFailed(Exception e);
}
 

IPresenter

public interface IPresenter {
    void getDataToView(String baseUrl, Map<String,String> map);
}
 

PresenterImpl

public class PresenterImpl implements IPresenter {
    private IView iView;
    private static final String TAG = "PresenterImpl";

    public PresenterImpl(IView iView){
        this.iView = iView;
    }
    @Override
    public void getDataToView(String baseUrl, Map<String, String> map) {
        ModelImpl model = new ModelImpl();
        model.getProduct(baseUrl, map, new LoadNetListener() {
            @Override
            public void loadSuccess(Object netData) {
                iView.getData(netData);
            }

            @Override
            public void loadFailed(Object netData) {
                Log.e(TAG, "loadFailed: ----展示商品失败");
            }
        });
    }
}
 

MainActivity

public class MainActivity extends AppCompatActivity implements IView {

    private PresenterImpl presenter;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        HashMap<String, String> map = new HashMap<>();
        map.put("","");
        presenter = new PresenterImpl(this);
        presenter.getDataToView("https://www.zhaoapi.cn/",map);
    }

    @Override
    public void getData(Object o) {
        Product product = (Product) o;
        Log.e(TAG, "getData: ----"+product.getData().get(0).getTitle());
    }

    @Override
    public void getFailed(Exception e) {
        Log.e(TAG, "getData: ----展示失败");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值