大家好,我已经能够将名称/实用OnDate属性解析为kotlin数据类但我无法正确解析exercices属性,您可以查看屏幕截图以获取我得到的输出。你知道我该做什么吗?(编辑:我正在回收器中显示数据查看)
[
{
"name": "Introductory Session",
"practicedOnDate": "2016-05-08T14:48:28.257Z",
"exercises": [
{
"exerciseId": "0",
"name": "Quarters flat minor C",
"practicedAtBpm": 40
},
{
"exerciseId": "1",
"name": "Triplets flat major A",
"practicedAtBpm": 40
},
{
"exerciseId": "2",
"name": "Eigths flat minor A",
"practicedAtBpm": 40
},
{
"exerciseId": "3",
"name": "Eigths sharp minor C",
"practicedAtBpm": 40
}
]
}
这是我的getSessions函数:
private fun getSessions() {
val retrofitBuilder = Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build()
.create(ApiInterface::class.java)
val retrofitData = retrofitBuilder.getData()
retrofitData.enqueue(object : Callback<List<SessionsItem>?> {
override fun onResponse(
call: Call<List<SessionsItem>?>,
response: Response<List<SessionsItem>?>
) {
val responseBody = response.body()!! //NOT NULL
myAdapter = sessionAdapter(baseContext,responseBody)
myAdapter.notifyDataSetChanged()
recyclerview.adapter = myAdapter
}
override fun onFailure(call: Call<List<SessionsItem>?>, t: Throwable) {
d("MainActivity","onFailure"+t.message)
}
})
}
会话适配器:
class sessionAdapter (val context:Context,val sessionList:List<SessionsItem>):RecyclerView.Adapter<sessionAdapter.ViewHolder>(){
class ViewHolder(itemView: View):RecyclerView.ViewHolder(itemView) {
var sessionName:TextView
var practicedOnDate:TextView
var exercises:TextView
init {
sessionName = itemView.sessionName
practicedOnDate = itemView.practicedOnDate
exercises = itemView.exercices
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
var itemView = LayoutInflater.from(context).inflate(R.layout.row_items,parent,false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.sessionName.text = sessionList[position].name
holder.practicedOnDate.text = sessionList[position].practicedOnDate
println(sessionList[position].exercises.get(0))
holder.exercises.text =sessionList[position].exercises.toString()
}
override fun getItemCount(): Int {
return sessionList.size
}}
我的会话数据类:
data class SessionsItem(
val exercises: List<Exercise>,
val name: String,
val practicedOnDate: String)
我无法使用的exercise数据类:
data class Exercise(
val exerciseId: String,
val name: String,
val practicedAtBpm: Int)
这是我的输出:屏幕截图
我只想得到练习的名称和实际的AtBpm属性,但我得到了的所有内容
覆盖下面中Exercise数据类中的toString()
data class Exercise(
val exerciseId: String,
val name: String,
val practicedAtBpm: Int){
override fun toString(): String = "name=$name, practicedAtBpm=$practicedAtBpm"
}