0

我有一个RecyclerView,每个列表项都有一个ChipGroup。我想Chip从 xml 膨胀 s 并将它们添加到ChipGroup. 每个列表项有 1 到 4 个筹码。如果我RecyclerView有 50 件物品,Chips 会膨胀 50 到 200 倍。由于 ViewHolder 模式,RecyclerView项目只会膨胀一次。应该可以将通货膨胀计数减少到最多 50 次Chip。如何ViewHolder为 s 应用相同的模式Chip

4

3 回答 3

1

如果 . 中的每个元素RecyclerView都有 1-4 个芯片,我认为总是膨胀四个芯片是完全合理的,但是当你绑定ViewHolder. 如果你有大量筹码,这种策略可能并不理想,但对于四个来说应该没问题。

于 2018-10-11T02:58:29.880 回答
0

如果我理解正确,您担心 RecyclerView 的性能。您没有显示您的代码,也没有提供屏幕截图,所以我假设您的屏幕上有 5 到 8 个项目,总共有 50 个项目。众所周知,Google 推出的 RecyclerView 正是为了做到这一点——处理大型列表的性能问题。一旦项目在屏幕上不再可见,请确保 RecyclerView... 回收它(阅读:将其从内存中删除)。所以在你的情况下,每个屏幕只有 5 到 24 个芯片 - 没什么大不了的。恕我直言,没有比 RecyclerView 更好的方法来处理通货膨胀和回收视图。谷歌的人让它变得非常健壮和聪明。

于 2020-10-16T20:07:40.863 回答
-1

ViewHolder 模式重用 ViewGroup 中声明的每个视图。您正在逐项将芯片动态添加到您的芯片组(以及您的视图组);RecyclerView 无法知道您要重用哪些芯片。

您可以在 XML 中的 ChipGroup 布局中创建 50 个占位符芯片,然后动态更新/显示/隐藏它们,但这不是一个非常优雅的解决方案。

于 2018-10-11T02:52:38.710 回答