日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...

發布時間:2025/3/21 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)网络请求的两种实现方式...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。