// top-level in SearchAdapter
lateinit var colorsAdapter: ColorsAdapter
// when binding a ViewHolder
colorsAdapter.setData(colors)
binding.itemsColors.setupRecyclerview(
LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, true),
colorsAdapter
)
inner class ViewHolder(
private val binding: ItemSearchListBinding
) : RecyclerView.ViewHolder(binding.root) {
// create a unique instance for this VH to use
private val colorsAdapter = ColorsAdapter()
...
}
1条答案
按热度按时间mm9b1k5b1#
每种颜色
ViewHolder
都有自己的RecyclerView
,对吧?它也需要自己的ColorsAdapter
-这就是你用来告诉一个特定的RecyclerView
来显示一组特定的颜色。现在,您有一个适配器,您正在所有
RecyclerView
中重用它:所以你对单个适配器所做的任何改变都会更新使用它的每个
RecyclerView
。在bind函数中,你在单个适配器上调用setData(colors)
-你基本上是在更新所有内容以显示相同的颜色。就像每个
ViewHolder
在布局中有自己的RecyclerView
一样,你也需要它有自己的ColorsAdapter
。所以你可以在创建每个ViewHolder
示例时创建一个:现在你的
bind
函数将引用VH的适配器的特定示例(不要忘记删除SearchAdapter
中的顶级示例,因为你现在没有使用它)。