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。
添加回答
舉報