2013-12-20 45 views
2

我正在下载很多图像和文字(就像facebook的帖子)从服务器。我可以使用嵌套的线性布局而不是列表视图吗?

所以当listview被滚动时,它会在创建循环视图时闪烁。所以我想为我的主线性布局中的每个帖子使用多个线性布局。

在这种情况下,会不会有滚动性能或内存消耗问题?请帮忙?

+1

为什么你不使用异步图像下载机制? –

+0

请发布您的代码.... – dipali

+1

为什么不使用此答案中提到的自定义延迟加载库? http://stackoverflow.com/a/8562313/1979347 –

回答

2

您不应该使用一堆LinearLayouts作为ListView的替代品。

ListViews做一些叫做View Recycling的事情,这样任何时候只有用户可以看到的视图数量才会保存在内存中。其余视图在用户向上/向下滚动时创建并放弃。例如,如果您的屏幕大小一次只能看到10行,则根据具体实现,任何时候只有10-15行ListView将存储在内存中。

如果将您的ListView替换为200 LinearLayouts,那么您将在内存中保存200个ViewGroups。这可能会导致性能下降,或导致应用程序因OutOfMemoryError而崩溃。

有关ListView性能改进的更多提示,请参阅此great post by Lucas Rocha

+0

嘿Anup - **搁置* *性能因素。假设我们只讨论**短名单**。所以,只有十个或二十个项目,比方说,想象一下可能是某种弹出式选择器。所以,整个事情不到一个或两个屏幕高度,我们会说。 **在这种情况下**我真的很好奇哪个“更好” - 是否有任何缺点,只需填充一个LinearList,看点很少? Android专业人士的感受是什么? – Fattie

+1

在这种情况下,我个人觉得最好只使用没有ListView的常规视图。 –

+0

@AnupCowkur:嗨,如果我没有几个子视图不少于10,但每个视图(项目)都有很多子视图? – hguser

3

那么肯定会有性能问题由于listview创建并放弃了不重点的列表项,比如只有在屏幕上的那些(比如10个)在内存中,在线性布局中所有200将不得不保留在内存中,这是堆栈而不是堆栈的内存,因此如果应用程序保持运行,并且由于内存不足问题将导致FORCE CLOSE,它会使您的手机受到影响。

你也可以让你的线性布局放弃不重点的项目,但即使经过这么多的努力,它将与列表视图一样,所以我不会建议这样做,而是直接使用列表视图

相关问题