Kotlin网络封装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/LH_sunshine/article/details/102556684

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)
    }
}

猜你喜欢

转载自blog.csdn.net/LH_sunshine/article/details/102556684