我已经成功地从Reddit API中提取JSON,但我无法将其放入我的RecyclerView中。我设置了一个日志来检查我的JSON是空的还是空的,并且日志成功地打印了所需的输出,这意味着我的JSON不是空的,并包含了必要的数据。
这是我的PostRowAdapter.kt
class PostRowAdapter(private val viewModel: MainViewModel)
: ListAdapter<RedditPost, PostRowAdapter.VH>(RedditDiff()) {
private var awwRow = listOf<RedditPost>()
override fun onBindViewHolder(holder: VH, position: Int) {
val binding = holder.binding
awwRow[position].let{
binding.title.text = it.title
}
}
override fun getItemCount() = awwRow.size
}
我认为我的代码是正确的,但当我运行应用程序时,RecyclerView仍然是空白的。我哪里错了?
您的PostRowAdapter
正在填充awwRow
列表,该列表在启动时为空且从未更新,因此该RecyclerView
将始终包含0个元素
如果您使用的是ListAdapter
和submitList(...)
方法,那么您不应该覆盖getItemCount
,也不应该有自己的数据列表,所以删除这些行
private var awwRow = listOf<RedditPost>() // on top
override fun getItemCount() = awwRow.size // on bottom
如果您想使用submitList()
方法访问整个列表集,那么您可以调用适配器内部的getCurrentList()
。如果您在位置(如onBindViewHolder
中(需要特定项目,则使用getItem(position)
。所以不是
awwRow[position].let{
你应该有
getItem(position).let{