以编程方式添加视图与使用 recyclerView 有啥区别?
Posted
技术标签:
【中文标题】以编程方式添加视图与使用 recyclerView 有啥区别?【英文标题】:What will be the difference between adding the view programmatically vs using recyclerView?以编程方式添加视图与使用 recyclerView 有什么区别? 【发布时间】:2022-01-10 08:59:15 【问题描述】:有一个canvas
,作为初学者,我已经了解了 android 中的viewGroup
,以及如何使用xml
或以编程方式使用@ 在viewGroup
中添加view
或多个views
987654327@。我们可以添加任意数量的view
,也可以使用layoutParams
动态增加view
的height
。虽然我们可以使用addView
或setLayoutParams
来增加canvas
的高度,因为我们添加更多pages
,我们为什么要使用recyclerView
?
从UI
的角度来看,无论我们说increasing height
、adding view
还是list of items
,这里的一切似乎都是平等的。即使当我们是increasing the height
时,每个添加之间也有一个分隔符。但是,分离器在这里不是主要问题。基本上,根据pages
或items
或data
的数量,我们是canvas
视图的increasing the height
,因此我们可以包含并显示所有data
。这些pages
的数量目前已设置为14
,但可以无限制地增加,每个canvas board
可以包含不可预测的数据量——可能是数百个点、线条、形状、文本的组合,图像等等 - 这是公平的。我们不限制用户在个人canvas board
上仅绘制一定数量的东西。
【问题讨论】:
【参考方案1】:虽然我们可以使用 addView 或 setLayoutParams 来增加 画布随着我们添加更多页面,我们为什么要使用 recyclerView?
因为 RecyclerView 对于大数据集更高效。
从 UI 的角度来看,无论我们说什么,这里的一切似乎都是平等的 增加高度或添加视图或项目列表。
不,不是。如果您将 1000 个项目添加到 ViewGroup
,它将尝试绘制 1000 个项目,最好将您的应用拖到爬行状态,或者最坏情况下崩溃。
如果您将 1000 个项目添加到 RecyclerView
,它将绘制但许多项目将适合屏幕。
这些页数目前已设置为 14,但可以无限增加
不真实。总有一个限度。它可能很大,但总是有限制的。在这种情况下,限制是在 RAM 上(设备可以在内存中保存多少数据,然后才会报废)。
【讨论】:
【参考方案2】:RecyclerView 是一个强大的工具,可以有效地显示大量数据集,具有多种功能,例如缓存和显示带有动画的项目。 使用 RecyclerView RecyclerView 和 addView() 之间没有什么可比较的,因为它们的用法不同。 不过,我建议您阅读这篇文章,了解 RecyclerView 的工作原理。
How Does RecyclerView Works
【讨论】:
感谢@Ali Babadi 抽出时间提供帮助。我浏览了recyclerView Here 和onCreateViewHolder 部分的官方文档,我发现这一行:ViewGroup: The ViewGroup into which the new View will be added after it is bound to an adapter position.
我明白了,recyclerView
也只使用addView
。
如果recyclerView
也在使用addView
,区别和优化在哪里?
RecyclerView
使用缓存策略从 RecycledViewPool 中检索缓存的视图。以上是关于以编程方式添加视图与使用 recyclerView 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
RecyclerView 与以编程方式创建的视图:哪个更好?
Android:以编程方式在片段中添加多个 RecyclerView