列表视图中头部和底部的视图缓存

10

可以向列表视图添加页眉和页脚视图。这些视图是否被缓存? 就像getView机制确保为列表回收视图资源并防止过多的内存消耗一样。页眉/页脚视图也是如此吗?

编辑

考虑一个布局(本质上是一个)具有以下内容:

  • 约40个不同的字段,分成5个视图组
  • 一个评论类型的布局,可以拥有任意数量需要随意展开的评论。

理想情况下,滚动视图将是此类内容的合适选择。 但这会让编舞者抱怨跳过了1000多帧。

另一种可能的解决方案是带有页眉和页脚的列表视图。 相对于前面提到的滚动视图,列表视图以某种方式更低地消耗内存。

缓存和打包问题是我尝试理解是否可以有一种视图存储/检索机制,使得充气和重定位侦听器变得更加容易,而不是像getView()那样的全能方法。

编辑2 我不想使用滚动视图,因为它会在开始时充气所有视图,使活动/片段消耗大量内存。


是的,这是可能的。我不理解缓存部分。页眉和页脚视图不会被回收,因为它们不会被重复使用,只存在一次。 - David Wasser
@MithunR。如果是,请添加一个答案。我真的很想知道。 - Droidekas
2个回答

3
可以向列表视图添加标题和页脚视图。
是的,ListView有addFooterViewaddHeaderView
就像获取视图机制确保为列表回收视图资源并防止过度内存消耗一样。头部/页脚视图也会得到类似的关注吗?
不,它们没有。
特别是你可以多次调用这两种方法。在这种情况下,您将拥有更多的页脚/页眉视图,并且它们将按插入顺序显示。

但我想视图对象会被打包或捆绑在一起,是这样吗?或者视图缓存在这里没有起作用? - Droidekas
视图缓存?打包?为什么? - Blackbelt
想象一个带有页眉和页脚的列表视图,只有中间的1个布局。这本质上是一个有3个子元素的ScrollView。但ScrollView的内存消耗比ListView更大。为什么? - Droidekas
不是这样的。在这种情况下,ListView 将需要更多的内存,因为它在内部分配了一个视图数组,该数组的大小等于需要填满屏幕所需的视图数量。 - Blackbelt
就仅包含标题,页脚和一个列表项的情况而言,ListView 会占用更多的内存。这将取决于列表中有多少项,它比 ScrollView 更具性能表现。如果您还希望对标题和页脚视图进行回收利用,可以通过在适配器中获取位置(在位置0处展开标题,在位置adapter.getCount() - 1处展开页脚),将它们充气成实际视图放置在列表视图中。这将确保它们能够被回收利用。 - Marcus Hooper

0

这只是展示如何给ListView添加页眉和页脚。我的问题是是否可能对它们进行缓存或回收。我希望得到一个能够显示更少内存消耗和最少的充气视图数量的答案。这个页眉/页脚将始终被充气。 - Droidekas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接