Github地址

效果图如下;

MVP

Retrofit
Retrofit是Square开发的一个Android和java的REST客户端库。

这两天工作不是很忙,写了一个当前流行的Android MVP+Retrofit(封装)+RxJava实例,mvp和retrofit我就不详细讲的,以后会详细写,下面直接上demo!

1.分类
首先我们要规划好包名和类的分类,不要把类随随便便放,如下图:

除了上图的模式,我们还可以把所有mvp类放在mvp包下,然后再按照上图写。

2.添加依赖和权限

    compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'io.reactivex:rxandroid:1.2.1'compile 'io.reactivex:rxjava:1.1.6'compile 'com.google.code.gson:gson:2.8.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
  <uses-permission android:name="android.permission.INTERNET"/>

3.定义Model--实体类 与URL接口
Model其实就是我们常常写的实体类,一般直接可在AS的GsonFormat插件上生成就可以了.这里我就不贴出来了

URL接口如下:

public interface ApiService {//baseUrlString API_SERVER_URL = "http://apistore.baidu.com/microservice/";//加载天气@GET("weather")Observable<WeatherModel> loadDataByRetrofitRxjava(@Query("citypinyin") String cityId);//    @FormUrlEncoded
//    @POST("user/login")
//    Observable<WeatherModel> getlogin(@Field("oper_name") String page, @Field("oper_pwds") String rows);
}

这就需要我们对Retrofit的注解好好去看一看.

5.连接通信(已封装)
其实就是下面的代码,这些我已经封装了,请下载查看。

     public static Retrofit retrofit() {if (mRetrofit == null) {OkHttpClient.Builder builder = new OkHttpClient.Builder();OkHttpClient okHttpClient = builder.build();mRetrofit = new Retrofit.Builder().baseUrl(ApiService.API_SERVER_URL).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(okHttpClient).build();}return mRetrofit;}

6.View类

public interface WeatherView {void getWeatherSuccess(WeatherModel weatherModel);
}

下面是activity:

public class MainActivity extends AppCompatActivity  implements WeatherView,View.OnClickListener {private Button btn;private TextView tv_show;private EditText edt;private WeatherPresenter weatherpresenter=new WeatherPresenter(this);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {tv_show= (TextView) findViewById(R.id.tv_show);btn= (Button) findViewById(R.id.btn);edt= (EditText) findViewById(R.id.edt);btn.setOnClickListener(this);}@Overridepublic void getWeatherSuccess(WeatherModel weatherModel) {tv_show.setText("  "+weatherModel.getRetData().getWeather()+"  "+weatherModel.getRetData().getWD());}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn:weatherpresenter.loadDataByRetrofitRxjava11111(edt.getText().toString());break;}}@Overrideprotected void onDestroy() {super.onDestroy();if (weatherpresenter!=null){weatherpresenter.detachView();Log.e("RXJAVA","毁灭");}}
}

7.Presenter类

首先写一个BasePresenter:

public class BasePresenter<V> {public V mvpView;protected ApiService apiStores;private CompositeSubscription mCompositeSubscription;public void attachView(V mvpView) {this.mvpView = mvpView;apiStores = ApiClient.retrofit().create(ApiService.class);}public void detachView() {this.mvpView = null;onUnsubscribe();}//RXjava取消注册,以避免内存泄露public void onUnsubscribe() {if (mCompositeSubscription != null && mCompositeSubscription.hasSubscriptions()) {mCompositeSubscription.unsubscribe();}}public <T> void addSubscription(Observable<T> observable, Subscriber<T> subscriber) {if (mCompositeSubscription == null) {mCompositeSubscription = new CompositeSubscription();}mCompositeSubscription.add(observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(subscriber));}
}

下面是WeatherPresenter:

public class WeatherPresenter extends BasePresenter<WeatherView>{public WeatherPresenter(WeatherView view) {attachView(view);}public void loadDataByRetrofitRxjava11111(String cityId) {addSubscription(apiStores.loadDataByRetrofitRxjava(cityId), new Subscriber<WeatherModel>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(WeatherModel weatherModel) {//  Log.e("请求成功","111");mvpView.getWeatherSuccess(weatherModel);}});
}
}
}

我的公众号如下:

Android MVP+Retrofit(封装)+RxJava实例相关推荐

  1. android+MVP+Retrofit+RxJava做网络请求

    1.MVP+Retrofit+RxJava做网络请求2.GreenDao把第一页的数据缓存到数据库,列表实现上拉加载更多,下拉刷新功能 3.列表中的图片(img字段)使用Fresco进行加载 4.Re ...

  2. Android MVP +Retrofit+RxJava

    MVP +Retrofit+RxJava这三个结合使用好像已经火了一段时间了,有时候我们只是学会了使用,却不能深刻理解.之前写过两篇关于mvp的使用跟理解的文章.感兴趣的可以看一下,这篇文章关于mvp ...

  3. android中mvp封装,android-简单快速封装MVP+Retrofit2.0+Rxjava框架

    1.概述 对于MVP(Model View Presenter)大多数做开发的人都能说出一二,或者看到网上的对mvp的解释,对其意都有大概的了解,但让你真正写一套mvp框架,是不是发现无从下手? 曾几 ...

  4. Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架

    目录 1.什么是MVP? 2.什么是Retrofit? 3.RxJava 4.实践 之前公司的项目用到了MVP+Retrofit+RxJava的框架进行网络请求,所以今天特此写一篇文章以做总结.相信很 ...

  5. android搭建网络框架,Android 搭建MVP+Retrofit+RxJava网络请求框架(三)

    上一篇中主要是将mvp+rxjava+retrofit进行了结合,本篇主要是对mvp框架的优化:建议先去看上一篇:Android 搭建MVP+Retrofit+RxJava网络请求框架(二) 针对vi ...

  6. java使用bks双向认证_GitHub - wanglijun93/RxHttpUtils: Rxjava+Retrofit封装,便捷使用

    重磅推出 RxHttpUtils 2.x 版本 RxJava+Retrofit封装,基于RxJava2和Retrofit2重构,便捷使用 上次封装的是基于RxJava1版本的,时隔半年多之后现在推出基 ...

  7. java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

    Retrofit介绍: Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比 ...

  8. kotlin 仿开眼 app 学习 kotlin mvp retrofit rxjava

    Eyepetizer 项目地址:kaikaixue/Eyepetizer  简介:kotlin 仿开眼 app 学习 kotlin mvp retrofit rxjava 更多:作者   提 Bug ...

  9. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  10. 转吴小龙的 mvp Android MVP 实例

    转吴小龙的 mvp Android MVP 实例 详情点此http://wuxiaolong.me/2015/09/23/AndroidMVPSample/

最新文章

  1. 点击文字弹出一个DIV层窗口代码
  2. Java调优之jvm和线程的内存分析
  3. java的设计模式 - Builder模式
  4. SNMP功能开发简介 六 snmp功能开发阶段性总结
  5. c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面
  6. 严蔚敏数据结构:链表实现一元多项式相加
  7. cf不能全屏win7的解决方法_win7系统局域网不能访问怎么办 win7局域网不能访问解决方法...
  8. 【软件测试】黑盒测试の因果图法
  9. Qt工作笔记-让界面飞一会(让界面旋转出来)
  10. win7找回开机密码_电脑密码忘记了?教你四步轻松找回电脑开机密码
  11. linux初始:命令行解释器(shell)、权限
  12. 手机通讯录备份代码实现一
  13. 两天来的Java IO Tips
  14. atitit.seo 发帖关键词以及链接的制作.doc
  15. k8s 部署spring cloud项目
  16. 正阅读微信小说分销系统-视频教程-1.渠道商-公众号配置-基础信息
  17. 使用unity3d 接入anySDK的总结2
  18. 学习PPT与Excel的各种高级应用并掌握相关技巧
  19. Excel的外部数据的引用
  20. 一封华为离职IT总监的告别信

热门文章

  1. 学习C++必须掌握的概念
  2. HGOI 20190816 省常中互测8
  3. CCF——游戏(2017-12)
  4. Java——File类,递归
  5. ServletContextListener作用(转)
  6. ASP.NET2.0 Person Web Site:将图片以二进制的从数据库读取
  7. flume与log4j的整合
  8. bzoj 4289 TAX —— 点边转化
  9. [Link-Cut-Tree][BZOJ2002]弹飞绵羊
  10. Ubuntu 15.04下安装Docker