改造响应体! Kotlin 安卓工作室
Posted
技术标签:
【中文标题】改造响应体! Kotlin 安卓工作室【英文标题】:retrofit response.body!! Kotlin android studio 【发布时间】:2022-01-01 14:34:33 【问题描述】:我在用 Kotlin 改造时遇到问题,代码如下:
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?)
)
ApiInterface.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
)
我得到的结果是微调器中的这个,我只想要国家/地区的名称
【问题讨论】:
所以你想把你的List<data>
转换成List<String>
,对吧?
是的,我想在微调器中显示它
【参考方案1】:
您可以执行一个简单的map
操作将您的List<data>
转换为List<String>
。
val originalList: List<data> = // Response from retrofit
val newList: List<String> = originalList.map it.name.common
try it yourself
【讨论】:
以上是关于改造响应体! Kotlin 安卓工作室的主要内容,如果未能解决你的问题,请参考以下文章
如何将改造回调响应中的回调从 java 转换为 Kotlin