MVP+Retrofit封装网络请求
来源:互联网 发布:大数据运维工作内容 编辑:程序博客网 时间:2024/06/02 02:37
//http//泛型类public class MessageBean<T> { private String result; private T data; public String getResult() { return result; } public void setResult(String result) { this.result = result; } public T getData() { return data; } public void setData(T data) { this.data = data; }}public interface ApiService { @GET("93app/data.do") Flowable<MessageBean<List<News>>> getNews(@QueryMap Map<String, String> map);}public class RetrofitUtils { private static volatile RetrofitUtils instance; private ApiService apiService; private RetrofitUtils() { Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .baseUrl("http://www.93.gov.cn/") .build(); apiService = retrofit.create(ApiService.class); } public static RetrofitUtils getInstance() { if (instance == null) { synchronized (RetrofitUtils.class) { if (null == instance) { instance = new RetrofitUtils(); } } } return instance; } public ApiService getApiService() { return apiService; }}
//modelpublic interface IModel { void getData(Map<String, String> map);}public class NewsModel implements IModel { private NewsPresenter presenter; public NewsModel(NewsPresenter presenter){ this.presenter = presenter; } @Override public void getData(Map<String, String> map) { Flowable<MessageBean<List<News>>> flowable = RetrofitUtils.getInstance().getApiService() .getNews(map); presenter.getNews(flowable); }}
//presenterpublic interface BasePresenter { void getData(Map<String, String> map);}public class NewsPresenter implements BasePresenter { private IView iv; private DisposableSubscriber subscriber; public void attachView(IView iv) { this.iv = iv; } public void detachView() { if (iv != null) { iv = null; } if (subscriber != null) { if (!subscriber.isDisposed()) { subscriber.dispose(); } } } @Override public void getData(Map<String, String> map) { IModel model = new NewsModel(this); model.getData(map); } public void getNews(Flowable<MessageBean<List<News>>> flowable) { subscriber = (DisposableSubscriber) flowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<MessageBean<List<News>>>() { @Override public void onNext(MessageBean<List<News>> listMessageBean) { if (listMessageBean != null) { List<News> list = listMessageBean.getData(); if (list != null) { iv.onSuccess(list); } } } @Override public void onError(Throwable t) { iv.onFailed(new Exception(t)); } @Override public void onComplete() { } }); }}
//viewpublic interface IView { void onSuccess(Object o); void onFailed(Exception e);}public class MainActivity extends AppCompatActivity implements IView { private static final String TAG = "MainActivity"; private NewsPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Map<String, String> map = new HashMap<>(); map.put("channelId", "0"); map.put("startNum", "0"); presenter = new NewsPresenter(); presenter.attachView(this); presenter.getData(map); } @Override public void onSuccess(Object o) { if (o instanceof List) { List<News> news = (List<News>) o; Log.i(TAG, "onSuccess: " + news.size()); } } @Override public void onFailed(Exception e) { Log.e(TAG, "onFailed: " + e.getMessage()); } @Override protected void onDestroy() { super.onDestroy(); if (presenter != null) { presenter.detachView(); } }}
阅读全文
0 0
- MVP+Retrofit封装网络请求
- mvp基类+retrofit封装 请求数据
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- MVP+Retrofit+Observable+RecyclerView请求网络
- android+MVP+Retrofit+RxJava做网络请求
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- MVP(Retrofit+RXJava)实现网络请求
- RxJava+Retrofit+MVP 封装带有加载框的Http请求
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- retrofit网络请求的简单封装使用
- RxJava+Retrofit网络请求终极封装
- 封装Retrofit + okhttp + rxjava网络请求框架
- MVp封装RxJava+Retrofit
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了
- MVP +Retrofit +Rxjava 请求
- mvp下rxjava+retrofit的登录网络请求demo
- Android 一步步搭建MVP+Retrofit+RxJava网络请求框架
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)G.幼儿园战争
- 使用pm2部署node服务
- 怎样才能赚到钱系列(九):交流的价值
- 290. Word Pattern
- TX2更改内核
- MVP+Retrofit封装网络请求
- C#之out与ref
- CentOS 7 Linux 中Yum方式安装Nginx的配置(咋个办呢 zgbn)
- 设计模式之解释器模式
- 玩转 ESP8266 Arduino 笔记01 开发环境搭建
- 全国大学API接口
- HTML基础(4.input其他)
- Python3之1003.我要通过(20分)
- 1.Sping简介