代码之家  ›  专栏  ›  技术社区  ›  Palm

为一个项目多次调用RecyclerView onBindViewHolder

  •  10
  • Palm  · 技术社区  · 6 年前

    我使用了 RececlerView 使用 ViewHolder 暂时的模式。 Im正在实现自定义 Adapter .

    我没有在我的代码中搜索特定的bug帮助。

    我只是想知道,这是否正常 onBindViewHolder 方法被多次调用(对于同一项),同时滚动到列表末尾并向上滚动。在这种情况下 onBindViewHolder 再次为项0和1调用(列表共包含7项)

    是否有可能在不通知datasat已更改的情况下再次调用此方法?

    我有点困惑。

    谨致问候, 棕榈

    1 回复  |  直到 6 年前
        1
  •  13
  •   Abbas    6 年前

    是的,对于一个 RecyclerView 调用 onBindViewHolder() 多次。

    A. 回收视图 仅创建最小数量的 Views 需要填充屏幕。它通过重用旧的/创建的 意见 . 这样,当您向下滚动时,在滚动到顶部期间隐藏的视图将被删除并置于最后可见的视图旁边 View 并在此处添加。但是自从 看法 当前与旧数据绑定 onBindViewHolder() 再次调用以确保 看法 在渲染前仅与正确的数据绑定。

    同样,你会注意到 onCreateViewHolder() 仅称为 意见 它需要。

    为了更好地了解 回收视图 我建议你阅读一下Recycler、LayoutManager和Recycler的作品。适配器a的三个核心部件 回收视图 .