首页 > 解决方案 > (android) 应该只在第一次调用 setAdapter() 吗?

问题描述

这不是代码问题。

正如我在某些网站上看到的,RecyclerView 的 setAdapter 第一次应该只运行一次。

是什么原因?

如果是这样,在嵌套的 RecyclerView 中,这个视频的人一直在调用

Sub RecyclerView 每次回收时的 setAdapter()

onBindViewHolder(),是不是错了??

https://www.youtube.com/watch?v=EyUjw6b5gXE

添加 在此处输入图像描述

标签: androidandroid-recyclerviewandroid-adapter

解决方案


不,我认为他是对的。让我们看看视频中提出的逻辑。你有物品parent清单。child据我所知,这是普通情况。但是列表中的每个项目都是child其列表的项目,该列表存储在列表的项目中。因此,当您在列表的容器内调用时,您会向其发送数据 以及它们的内容,为什么每次都被调用?这很简单,让我们看看文档parentparentchildparentsetAdapter()parentchildrenchildrenonBindViewHolder()setAdapter

RecyclerView 调用此方法将 ViewHolder 与数据相关联。该方法获取适当的数据并使用数据填充视图持有者的布局。例如,如果 RecyclerView 显示名称列表,则该方法可能会在列表中找到适当的名称并填写视图持有者的 TextView 小部件。

因此,当您为第一级 RV 发送数据时,您会将子 RV 与您在列表setAdapter的每个项目中调用的某些数据相关联parent。因此,它将在parent列表项的每个位置调用,以将数据分配给child列表,该列表也将有一些数据持有者进行处理。让我们看看生活示例:

grandfather (activity) bought some candies for his children (first level list items) who will give some of them to their children (second level lists which are items of first level list items) 

为了在亲戚之间传递一些糖果,我们使用setAdapter()方法:) 我希望我解释了你的问题,你会理解这个视频:D


推荐阅读