【问题标题】:How many viewholders will be created in a RecyclerView.Adapter在 RecyclerView.Adapter 中将创建多少个 viewholder
【发布时间】:2020-05-28 14:26:00
【问题描述】:

我不明白RecyclerView 是如何回收视图并在存在不止一种视图时重用它们的。我知道Adapter 会再创建两个ViewHolders 用于重用。在这种情况下, 可以重复使用的视图类型不超过两种,以在窗口中呈现下一项。但是如果下一项的类型与已回收的两种类型中的任何一种都不匹配,则将没有可用的视图因为它需要的视图类型在屏幕上仍然可见并且不能被回收,所以被重用于呈现下一个项目。系统如何处理它?任何和所有的答案都值得赞赏。

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    如果有可用的回收视图与新的可见视图相匹配,那么它将重新使用。否则它将为新视图创建新对象。它使用 getViewType() 来查找。
    您可以查看this 了解更多相关点。

    【讨论】:

    • 欢迎。投票并接受任何答案。这就是回答者的能量。 ;-)
    【解决方案2】:

    RecyclerView 将根据需要创建尽可能多的ViewHolders,以填充可用的可见空间。当一个人滚动到视野之外时,就会发生回收。届时,它将被重新用于滚动到视图中的新项目。

    【讨论】:

    • 但是如果回收的视图类型与滚动到视图中的新项目的类型不匹配怎么办?回收的视图可以重新用于新的吗?
    • 不,只会重复使用正确 viewType 的项目。 ViewHolder 将在下次需要相同类型的项目时重复使用。
    【解决方案3】:

    已创建的 ViewHolder 的数量。通常,您可以计算出有多少 应该通过确定有多少列表项一次适合您的屏幕并添加 2 到 4 到那个号码。这不是确切的公式,但会让你知道有多少 已创建 ViewHolders 以显示任何给定的 RecyclerView。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 2020-10-19
      • 2017-02-25
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多