kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...
2019独角兽企业重金招聘Python工程师标准>>>
今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小案例,希望对大家有所帮助,效果图:
Retrofit是Square公司开发的一款针对Android网络请求的一个当前很流行的网络请求库。可参考博客看详细介绍:Android开发之Retrofit+RxJava的使用
完成以上功能需引入:
compile "com.android.support:appcompat-v7:$support_version"compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"compile "org.jetbrains.anko:anko-common:$anko_version"compile 'com.zhy:okhttputils:2.6.2'compile 'com.alibaba:fastjson:1.1.54.android'compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'compile 'io.reactivex:rxandroid:1.2.1'compile 'io.reactivex:rxjava:1.1.6'
class MvpOkHttpActivity : BaseActivity<IView,PresenterEmlpe>(),IView {override fun setMainLayout(): Int {return R.layout.activity_mvp_ok_http}override fun createPresenter(): PresenterEmlpe {return PresenterEmlpe()}override fun initView() {text.text="加载中......"}override fun initBeforeData() {btn.setOnClickListener {p!!.onRequest(Api.showRequestData("15","5"))}}override fun onLoadContributorStart() {toast("加载中......")}override fun onLoadContributorComplete(data: String) {Log.i("data",data)toast(data)//解析数据val entityTitle = JSON.parseObject(data, EntityTitle::class.java)if (entityTitle.data != null){text.text=entityTitle!!.data!!.get(0).title}}override fun onNetWrok() {toast("网络未连接")}override fun onError(error: String) {toast(error)}}
可见代码是相当比较少的,以MVP模式来完成的,主要有Model,Presenter,View
Model:
class ModelEmlpe : IMode{override fun onRequest(url: String, map: Map<String, String>,callBackListenter: IMode.CallBackListenter) {OkHttpUtils.post().url(url).params(map).build().execute(object : StringCallback() {override fun onError(call: okhttp3.Call, e: Exception, id: Int) {callBackListenter.onError("加载数据失败")}override fun onResponse(response: String, id: Int) {callBackListenter.onDataCallBackListenter(response)}})}
}
Presenter
class PresenterEmlpe : BasePresenter<IView>(){var model: IMode? = nullinit {model = ModelEmlpe()}fun onRequest(map: Map<String,String>){var iView = getView()if (model != null && iView != null) {//验证网络 无网络不加载if (false){iView.onNetWrok()return}iView.onLoadContributorStart()//初始化model!!.onRequest(Api.url, map, object : IMode.CallBackListenter {override fun onDataCallBackListenter(data: String) {iView.onLoadContributorComplete(data)}override fun onError(error: String) {iView.onError(error)}})}}override fun detachView() {super.detachView()if (model != null){model = null}}}
当然解析数据也可以不用在Activity中完成,可以在我们的Presenter或Model中完成也是可以的,
我们的RxJava+Retrofit 提供了请求时就直接解析的功能,这点也可以好好运用。
两种请求方式的Activity,Presenter和View 其实是差不多的,就是Model层 实现的方式不一样而已。
由于代码太多,就不一一贴出来了,源码直接下载即可
源码点击下载
转载于:https://my.oschina.net/zhangqie/blog/1537189
kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...相关推荐
- android搭建网络框架,Android 搭建MVP+Retrofit+RxJava网络请求框架(三)
上一篇中主要是将mvp+rxjava+retrofit进行了结合,本篇主要是对mvp框架的优化:建议先去看上一篇:Android 搭建MVP+Retrofit+RxJava网络请求框架(二) 针对vi ...
- android密码dakay,安卓中按钮点击事件onClick的两种实现方式
很多的语言都有一些共同的特点,比如OnClick这个东西,可能我们能在js中见到,当然在安卓中也有,可能其他的编程语言也会有这个东西,刚好今天学了这个玩意在安卓中的写法. 点击事件大多用在Button ...
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
目录 1.什么是MVP? 2.什么是Retrofit? 3.RxJava 4.实践 之前公司的项目用到了MVP+Retrofit+RxJava的框架进行网络请求,所以今天特此写一篇文章以做总结.相信很 ...
- MVP+Retrofit+Rxjava网络请求购物车
//依赖 compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' com ...
- [Android] Android MVP 架构下 最简单的 代码实现
Android MVP 架构下 最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...
- Android MVP模式简单易懂的介绍方式 (一)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...
- android mvp模式例子_ANDROID MVP 模式 简单易懂的介绍方式
Android MVP Pattern Android MVP 模式1 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式.当项目越来越庞大.复杂,参与的研发人员越来越多的时候,MVP ...
- Android MVP模式 解析JSON 显示到ListView上
Android MVP模式 解析JSON 显示到ListView上 有关MVP模式的介绍,这里不作详细解释,稍后会更新MVP设计模式,请等待链接-- 简述本次的主要功能实现: 通过mvp设计模式,(M ...
- mvp模式复用android,MVP模式
简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供 ...
最新文章
- 游戏美术经验分享:如何提升游戏角色设计能力
- 【Tools】Tools博客汇总
- centos7 搭建dhcp服务器
- JQiery选择器中的表单元素
- Eclipse——热键amp;Help
- [蓝桥杯][算法提高VIP]五次方数-枚举
- P7011-[CERC2013]Escape【堆,启发式合并】
- 【fedora12】vlc-2.0.0编译
- PlayFab(二)如何通过Demo应用来进一步熟悉Playfab
- android放微信@功能,Android仿微信语音消息的录制和播放功能
- cmd代码表白_手把手教你把Python代码转成exe
- 若依(RuoYi)如何不登录直接访问?
- 10 个救命的 PHP 代码片段
- mui ajax方法
- jenkins相关下载链接
- 车道识别与交通标志识别
- m05_Extract Feature_Transformers(慎variances_)_download Adult互联网ads数据集_null value(?_csv_SVD_PCA_eigen
- 03.项目管理实践工具-团队绩效评价
- 广西壮族自治区公安厅信息中心异地容灾系统(三期)项目招标
- 新手如何运营好阿里国际站+产品标题组成