Retrofit+RxJava+MVP网络请求数据
2018-03-07 15:17
405 查看
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 { < 4000 strong>private static final [/b]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: ----展示失败");
}
}
相关文章推荐
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- android MVP+Retrofit2.0与RxJava网络请求数据,listview展示
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
- Android_Retrofit+RxJava+MVP+网络请求多次判断
- Android三大设计模式之一------------------MVP设计模式(包括rxjava+retrofit网络请求框架)
- MVP模式实现网络请求数据并添加到列表(Rxjava+Retrofit)
- Rxjava + Retrofit + @GET——请求网络数据
- RxJava Retrofit2 网络请求,返回数据格式统一的数据报文处理方法
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- Android 框架设计Demo,一个简单的MVP示例搜索功能,网络请求用Retrofit+RxJava实现
- android+MVP+Retrofit+RxJava做网络请求
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)
- MVP模式下使用Retrofit集合RxJava请求数据
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- Retrofit+Rxjava简单的请求网络数据
- Kotlin新语言使用RxJava+Retrofit请求网络数据+lambda表达式+RecyclerView展示+Glide展示图片