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)网络请求的两种实现方式...相关推荐

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

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

  2. android密码dakay,安卓中按钮点击事件onClick的两种实现方式

    很多的语言都有一些共同的特点,比如OnClick这个东西,可能我们能在js中见到,当然在安卓中也有,可能其他的编程语言也会有这个东西,刚好今天学了这个玩意在安卓中的写法. 点击事件大多用在Button ...

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

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

  4. MVP+Retrofit+Rxjava网络请求购物车

    //依赖 compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' com ...

  5. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  6. Android MVP模式简单易懂的介绍方式 (一)

    Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...

  7. android mvp模式例子_ANDROID MVP 模式 简单易懂的介绍方式

    Android MVP Pattern Android MVP 模式1 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式.当项目越来越庞大.复杂,参与的研发人员越来越多的时候,MVP ...

  8. Android MVP模式 解析JSON 显示到ListView上

    Android MVP模式 解析JSON 显示到ListView上 有关MVP模式的介绍,这里不作详细解释,稍后会更新MVP设计模式,请等待链接-- 简述本次的主要功能实现: 通过mvp设计模式,(M ...

  9. mvp模式复用android,MVP模式

    简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供 ...

最新文章

  1. 游戏美术经验分享:如何提升游戏角色设计能力
  2. 【Tools】Tools博客汇总
  3. centos7 搭建dhcp服务器
  4. JQiery选择器中的表单元素
  5. Eclipse——热键amp;Help
  6. [蓝桥杯][算法提高VIP]五次方数-枚举
  7. P7011-[CERC2013]Escape【堆,启发式合并】
  8. 【fedora12】vlc-2.0.0编译
  9. PlayFab(二)如何通过Demo应用来进一步熟悉Playfab
  10. android放微信@功能,Android仿微信语音消息的录制和播放功能
  11. cmd代码表白_手把手教你把Python代码转成exe
  12. 若依(RuoYi)如何不登录直接访问?
  13. 10 个救命的 PHP 代码片段
  14. mui ajax方法
  15. jenkins相关下载链接
  16. 车道识别与交通标志识别
  17. m05_Extract Feature_Transformers(慎variances_)_download Adult互联网ads数据集_null value(?_csv_SVD_PCA_eigen
  18. 03.项目管理实践工具-团队绩效评价
  19. 广西壮族自治区公安厅信息中心异地容灾系统(三期)项目招标
  20. 新手如何运营好阿里国际站+产品标题组成

热门文章

  1. 我对Java Serializable(序列化)的理解和总结
  2. CMake入门指南-编译教程
  3. 分类器评价与在R中的实现:混淆矩阵
  4. GMM(Gaussian mixture model, 高斯混合模型)
  5. 图像代数运算:平均值去噪,减去背景
  6. 2015年部分互联网公司笔试综合题及答案
  7. 人工智能:第二章 知识表示方法
  8. 3分钟学会Mysql查询之表连接,左连接,右连接,内连接…
  9. winform DataGrid排序、去掉第一的空白列
  10. iOS 延迟1.5s 执行方法