簡體   English   中英

retrofit response.body!! Kotlin android 工作室

[英]retrofit response.body!! Kotlin android studio

我對帶有 Kotlin 的 retrofit 有問題,代碼如下:

MainActivity.kt

 val apiInterface = ApiInterface.create().getCountry()
        apiInterface.enqueue( object : Callback<List<data>>{
            override fun onResponse(call: Call<List<data>>?, response: Response<List<data>>?) {
                if(response?.body() != null){
                    val adapter = ArrayAdapter(this@MainActivity,android.R.layout.simple_spinner_item,response.body()!!)

                    binding.spCountry.adapter=adapter //spCountry is a spinner
                }
            }
            override fun onFailure(call: Call<List<data>>?, t: Throwable?) {}
        })

接口接口.kt

interface ApiInterface {
    @GET("/v3.1/all")
    fun getCountry() : Call<List<data>>
    companion object {
        var BASE_URL = "https://restcountries.com/v3.1/all/"
        fun create() : ApiInterface {
            val retrofit = Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(BASE_URL)
                .build()
            return retrofit.create(ApiInterface::class.java)
        }
    }
}

數據.kt

data class data(
    @SerializedName("name") val name: name
)
data class name(
    @SerializedName("common") val common: String
)

我得到的結果是微調器中的這個,我只想要國家的名字

在此處輸入圖像描述

您可以執行簡單的map操作將List<data>轉換為List<String>

val originalList: List<data> = // Response from retrofit
val newList: List<String> = originalList.map { it.name.common }

自己試試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM