使用 Retrofit 从 Json 将数组解析为 Recycler 视图
Parse an Array into a Recycler view from Json with Retrofit
你好,我正在通过改造和回收视图练习我的 kotlin 技能,我在一些 JSON 我为我的练习找到的数据中发现了这种类型的数据
"capital":[
"Montevideo"
]
我知道这是一个数组,我能够通过在我的数据中声明 class 资本是这样的列表来将它解析到我的 Recyler 视图:
data class Country(
val name: Name,
val cioc: String,
val independent: Boolean,
val region: String,
val capital: List<String>
)
data class Name(
val common: String,
val official: String,
)
我像这样在我的适配器中使事情正常
class CountryAdapter(val countries: List<Country>): RecyclerView.Adapter<CountriesViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountriesViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerline, parent, false)
return CountriesViewHolder(view)
}
override fun getItemCount(): Int {
return countries.size
}
override fun onBindViewHolder(holder: CountriesViewHolder, position: Int) {
return holder.bind(countries[position])
}
}
class CountriesViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
private val officialName: TextView = itemView.findViewById(R.id.titulo)
private val independent: TextView = itemView.findViewById(R.id.titulo2)
private val capital: TextView = itemView.findViewById(R.id.titulo3)
fun bind(country: Country) {
//Integer.parseInt
// val sum = (user.id + user.id).toString()
officialName.text = country.name.official //user.address.geo.lat + " / " + user.address.geo.lng
independent.text = "Independent: " + country.independent.toString()
capital.text = country.capital.toString()
}
}
但是在我的 Recycler 视图中,首都的结果显示为 [蒙得维的亚] 而不仅仅是蒙得维的亚。我如何从视觉结果中取出 []?
谢谢
在 fun bind(country: Country) 中更改此设置:
capital.text = country.capital.toString().drop(1).dropLast(1)
//or
capital.text = country.capital[0]
Capital 是一个列表,所以在列表上执行 toString() 会给你一个像这样的数组字符串:“[a,b,c,d,e]”。
如果你想打印第一项,你可以获取它并在其上使用 toString :country.capital?.get(0)?.toString()
。
如果你想在没有钩子的情况下打印整个列表,你可以使用这样的 joinToString 方法:
country.capital.joinToString(" ")
第一个参数是分隔符,这里我只是在每个项目之间使用了一个space,但是你可以用任何字符串来分隔它们。
你好,我正在通过改造和回收视图练习我的 kotlin 技能,我在一些 JSON 我为我的练习找到的数据中发现了这种类型的数据
"capital":[
"Montevideo"
]
我知道这是一个数组,我能够通过在我的数据中声明 class 资本是这样的列表来将它解析到我的 Recyler 视图:
data class Country(
val name: Name,
val cioc: String,
val independent: Boolean,
val region: String,
val capital: List<String>
)
data class Name(
val common: String,
val official: String,
)
我像这样在我的适配器中使事情正常
class CountryAdapter(val countries: List<Country>): RecyclerView.Adapter<CountriesViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountriesViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerline, parent, false)
return CountriesViewHolder(view)
}
override fun getItemCount(): Int {
return countries.size
}
override fun onBindViewHolder(holder: CountriesViewHolder, position: Int) {
return holder.bind(countries[position])
}
}
class CountriesViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
private val officialName: TextView = itemView.findViewById(R.id.titulo)
private val independent: TextView = itemView.findViewById(R.id.titulo2)
private val capital: TextView = itemView.findViewById(R.id.titulo3)
fun bind(country: Country) {
//Integer.parseInt
// val sum = (user.id + user.id).toString()
officialName.text = country.name.official //user.address.geo.lat + " / " + user.address.geo.lng
independent.text = "Independent: " + country.independent.toString()
capital.text = country.capital.toString()
}
}
但是在我的 Recycler 视图中,首都的结果显示为 [蒙得维的亚] 而不仅仅是蒙得维的亚。我如何从视觉结果中取出 []?
谢谢
在 fun bind(country: Country) 中更改此设置:
capital.text = country.capital.toString().drop(1).dropLast(1)
//or
capital.text = country.capital[0]
Capital 是一个列表,所以在列表上执行 toString() 会给你一个像这样的数组字符串:“[a,b,c,d,e]”。
如果你想打印第一项,你可以获取它并在其上使用 toString :country.capital?.get(0)?.toString()
。
如果你想在没有钩子的情况下打印整个列表,你可以使用这样的 joinToString 方法:
country.capital.joinToString(" ")
第一个参数是分隔符,这里我只是在每个项目之间使用了一个space,但是你可以用任何字符串来分隔它们。