【问题标题】:(android) Should setAdapter() be called only the first time?(android) 应该只在第一次调用 setAdapter() 吗?
【发布时间】:2021-01-29 16:02:54
【问题描述】:

这不是代码问题。

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

是什么原因?

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

Sub RecyclerView 每次回收时的setAdapter()

onBindViewHolder(),错了吗??

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

添加

【问题讨论】:

    标签: android android-recyclerview android-adapter


    【解决方案1】:

    不,我认为他是对的。让我们看看视频中提出的逻辑。您有 parent 列表和 child 项目。据我所知,这是普通情况。但是 parent 列表中的每个 child 项目都是 parent 项目,其列表存储在 parent 列表的 child 项目中。因此,当您在parent 列表的容器内调用setAdapter() 时,您会将数据发送到它的children 和它们的childrenonBindViewHolder() 呢,为什么每次都调用setAdapter?很简单,看看documentation

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

    因此,当您发送第一级 RV 的数据时,您会将子 RV 与一些数据相关联,为此您在 parent 列表的每个项目中调用 setAdapter。因此,它将在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

    【讨论】:

    • 感谢您的评论。但是我看不懂视频,因为我英语不好。对不起。 :( 所以我读了你的答案并尝试理解它,但是有些句子有点难以理解。But every child item in parent list is parent item for its list which is stored inside the child item of the parent list -> 我不能很好地理解这部分。
    • hmm... 让我们从另一个角度来看,你有你的父母,你有你的孩子,你就像parent list item 有自己的 parent = list 并且有自己的 child =列表:)
    • 说实话,我还没有完全理解那句话。但是我通过画图添加了你的答案。你能看见它吗?您是想说什么?.. 您是说在向每个外部 RV 项目添加 inner RV item 时调用 setAdapter() 吗?这是否意味着多次调用setAdapter() 并不重要?
    • 1.不,它必须在onBindViweHolder 内部调用,因为这里的数据将分配给当前位置视图,并且数据也将发送给子 RV 2。您在 onCreate() 内部调用一次,因为您的第一个容器是活动并且在第二次将是不是活动的 RV 项目 :)
    • 如果您得到了详尽的答案,请单击其左侧的复选标记将其标记为已接受。
    猜你喜欢
    • 2020-05-20
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多