Android (OkHttp3+Gson)用MVP模式實(shí)現(xiàn)天氣預(yù)報(bào)小demo

效果:

最終效果圖

前言:

這個(gè)demo主要是練手和初嘗試,后面也在慢慢更新優(yōu)化網(wǎng)絡(luò)請(qǐng)求方面的代碼。本章的代碼也并不完美,推薦一步一步看后續(xù)更新的文章。該系列的其他文章:

VOL.2: Android retrofit2+OkHttp3的初嘗試

VOL.3: Android RxJava+retrofit2的初嘗試

知識(shí)點(diǎn):

1. Okhttp3的使用(僅做了Get請(qǐng)求)。

2. 用Gson解析json字符串。

3.MVP模式的嘗試。

一、框架的導(dǎo)入

1.1 Gson和Gosnformat的導(dǎo)入和使用詳見(jiàn):

使用Gson和GsonFormat解析復(fù)雜Json

本項(xiàng)目使用到的api:

https://www.sojson.com/open/api/weather/json.shtml?city=廣州

2.1需要用到的庫(kù)在build.gradle里輸入這兩行后sync就好了

compile 'com.squareup.okhttp3:okhttp:3.10.0'
compile 'com.google.code.gson:gson:2.8.4'
build.gradle

具體操作:

build.gradle

二、項(xiàng)目結(jié)構(gòu)

項(xiàng)目的代碼文件如圖:

項(xiàng)目結(jié)構(gòu)

使用了mvp模式的寫(xiě)法,工具類(lèi)包括用于解析Json的JsonUtils和發(fā)送OkHttp請(qǐng)求的OkHttpUtils。屬性類(lèi)是用GsonFormat生成的WeatherBean(使用Gson和GsonFormat解析復(fù)雜Json)。

三、具體代碼

3.1布局代碼activity_main

布局做的很簡(jiǎn)單,只有兩個(gè)button按鈕。

activity_main.xml

3.2 工具類(lèi)代碼

工具類(lèi)包括用于解析Json的JsonUtils和發(fā)送OkHttp請(qǐng)求的OkHttpUtils。

JsonUtils.java:

JsonUtils.java

OkhttpUtils.java:

OkhttpUtils.java

3.3 屬性類(lèi)

WeatherBean類(lèi)的代碼不需要我們手敲,具體參考使用Gson和GsonFormat解析復(fù)雜Json。

3.4 model層代碼

model層包括一個(gè)狀態(tài)監(jiān)聽(tīng)接口ILoadListener、一個(gè)Model層接口IWeatherModel,和類(lèi)WeatherModel。

ILoadListener.java:

ILoadListener.java

IWeatherModel.java:

WeatherModel.java

WeatherModel.java:

WeatherModel.java

3.5 Presenter層代碼

presenter層包括一個(gè)presenter接口IWeatherPresenter和類(lèi)WeatherPresenter。

IWeatherPresenter.java:

IWeatherPresenter

WeatherPresenter.java:

WeatherPresenter

3.6 View層代碼:

View層包括View接口IWeatherView,以及Activity類(lèi)ActivityMainActivity。

IWeatherView.java:

IWeatherView

ActivityMainActivity.java:

ActivityMainActivity

四、結(jié)語(yǔ)

以上就是用mvp模式寫(xiě)的天氣預(yù)報(bào)小demo。在體量小的項(xiàng)目里用mvp確實(shí)有點(diǎn)大材小用。其中mvp的寫(xiě)法是我模仿網(wǎng)上別人的項(xiàng)目寫(xiě)出來(lái)的,僅是學(xué)習(xí),肯定會(huì)有很多不足之處,歡迎指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容