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