效果:
前言:
這個(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):
本項(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'
具體操作:
二、項(xiàng)目結(jié)構(gòu)
項(xiàng)目的代碼文件如圖:
使用了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按鈕。
3.2 工具類(lèi)代碼
工具類(lèi)包括用于解析Json的JsonUtils和發(fā)送OkHttp請(qǐng)求的OkHttpUtils。
JsonUtils.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:
IWeatherModel.java:
WeatherModel.java:
3.5 Presenter層代碼
presenter層包括一個(gè)presenter接口IWeatherPresenter和類(lèi)WeatherPresenter。
IWeatherPresenter.java:
WeatherPresenter.java:
3.6 View層代碼:
View層包括View接口IWeatherView,以及Activity類(lèi)ActivityMainActivity。
IWeatherView.java:
ActivityMainActivity.java:
四、結(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ì)有很多不足之處,歡迎指正。