如何在Android中使用嵌套的Recyclerview

lhcgjxsq  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(115)

在我的应用程序中,我想使用RecyclerView到另一个Recyclerview,为此我写了下面的代码。
但运行应用程序后,当滚动项目时颜色混乱!
我有一个RecyclerView显示产品和到这个RecyclerView我有onother RecyclerView显示颜色!
如何解决此问题?

mm9b1k5b

mm9b1k5b1#

每种颜色ViewHolder都有自己的RecyclerView,对吧?它也需要自己的ColorsAdapter-这就是你用来告诉一个特定的RecyclerView来显示一组特定的颜色。
现在,您有一个适配器,您正在所有RecyclerView中重用它:

// top-level in SearchAdapter
lateinit var colorsAdapter: ColorsAdapter

// when binding a ViewHolder
colorsAdapter.setData(colors)
binding.itemsColors.setupRecyclerview(
    LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, true),
    colorsAdapter
)

所以你对单个适配器所做的任何改变都会更新使用它的每个RecyclerView。在bind函数中,你在单个适配器上调用setData(colors)-你基本上是在更新所有内容以显示相同的颜色。
就像每个ViewHolder在布局中有自己的RecyclerView一样,你也需要它有自己的ColorsAdapter。所以你可以在创建每个ViewHolder示例时创建一个:

inner class ViewHolder(
    private val binding: ItemSearchListBinding
) : RecyclerView.ViewHolder(binding.root) {

    // create a unique instance for this VH to use
    private val colorsAdapter = ColorsAdapter()

    ...
}

现在你的bind函数将引用VH的适配器的特定示例(不要忘记删除SearchAdapter中的顶级示例,因为你现在没有使用它)。

相关问题