版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Kotlin网络获取数据封装
class TakeoutApp : MobApplication() {
companion object{
var sUser:User = User()
}
override fun onCreate() {
super.onCreate()
sUser.id = -1
}
}
open abstract class NetPresenter(base:String) {
val service : TakeoutGet
init {
val homeInof= Retrofit.Builder()
.baseUrl(base)
.addConverterFactory(GsonConverterFactory.create())
.build()
service = homeInof.create(TakeoutGet::class.java)
}
abstract fun parserJson(json:String?)
val callback = object : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
if(response == null){
}else {
if(response.isSuccessful()){
val json = response?.body()?.string()
parserJson(json)
}
}
}
override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
}
}
}
class HomeFragmentPresenter(val homeFragment: HomeFragment) : NetPresenter("http://restapi.amap.com/"){
val url : String = "http://restapi.amap.com/v3/place/text?key=0e96c9281f28f99c7621464bf20a7e6f&keywords=%E7%BE%8E%E9%A3%9F&city=%E5%8C%97%E4%BA%AC&extensions=all"
var homelist:MutableList<homeBean> = mutableListOf()
override fun parserJson(json: String?) {
val jsonObject:JSONObject = JSONObject(json)
val jsonArray = jsonObject.getJSONArray("pois")
for (i in 0 until jsonArray.length()){
val jsonObject1 = jsonArray.getJSONObject(i)
val address = jsonObject1.getString("address")
val name = jsonObject1.getString("name")
val jsonObject2 = jsonObject1.getJSONObject("biz_ext")
val rar = jsonObject2.getString("rating")
val num = jsonObject2.getString("cost")
val jsonArray1 = jsonObject1.getJSONArray("photos")
val jsonObject3 = jsonArray1.getJSONObject(0)
val url = jsonObject3.getString("url")
val bean : homeBean = homeBean()
bean.address = address
bean.name = name
bean.pic = url
bean.sar = rar
homelist.add(bean)
}
Log.e("########",homelist.size.toString())
if(homelist.size > 0){
//有数据,成功页面
Log.e("####",homelist.size.toString())
homeFragment.onHomeSuccess(homelist)
}else {
//无数据,失败页面
homeFragment.onHomeFailed()
}
}
fun getHomeInfo(){
homelist = ArrayList()
service .getHomeInof(url)
.enqueue(callback)
}
}