2 回答
TA贡献1779条经验 获得超6个赞
API 返回一个 Json 对象数组。因此,您需要将其解析为数组。
而不是val feed = gson.fromJson(body, Feed::class.java)你应该放val feed = gson.fromJson(body, Array<Feed>::class.java)
主适配器
class MainAdapter(val feed: Array<Feed>): RecyclerView.Adapter<CustomViewHolder>(){
override fun getItemCount(): Int {
return feed.count()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val rowCell = layoutInflater.inflate(R.layout.repo_row, parent, false)
return CustomViewHolder(rowCell)
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
val fd = feed.get(position)
holder.view.titleText.text = fd.name.toString()
}
}
class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {
}
TA贡献1797条经验 获得超4个赞
您的问题在于该行:val feed = gson.fromJson(body, Feed::class.java)
。这将获取 json 并尝试反序列化为您提供的类。但是,Feed
是一个对象,并且您的 json 是数组的形式,因此当 gson 反序列化时,它{
在开始时需要 a 。相反,它看到的是[
.
有几个选项可以解决这个问题:
如果您有权访问 json 的源,请修改以适合对象
Feed
。更改
Feed
为扩展List<T>
或Array<T>
.将列表/数组类型传递给 gson。
添加回答
举报