Android ScrollView与ListView比较

7
我面临的问题是在一个视图中加载可能接近100个列表项。我有一个疑问,也许最好的实现方式是什么。我已经知道ListView可以回收视图,而ScrollView会将所有内容保存在内存中。我的想法是对ScrollView应用分页来避免当应用程序填充所有项时出现长时间的加载时间。
像Google+、Facebook、Twitter或LinkedIn这样的应用程序,您认为它们使用了ListView吗?
谢谢。
1个回答

15

ListView 绝对是最好的选择。它比 ScrollView 更容易使用,分页系统也不符合 Android 的风格。

ListView 用于根据信息数组创建长度不同的列表。ScrollView 用于在视图中具有(通常)固定数量的子元素(在布局 XML 中定义)。

ListView 不会填充所有项目,而是只会填充一页中能够显示的数量。带或不带分页,ListView 都是最快的选项。但是,如果每个子级完全不同,则应选择 ScrollView。


孩子们之间存在差异,这就是我为什么要求添加Facebook、Google+等示例的原因。我只是想了解如何进行优化,因为目前使用ScrollView在显示视图的步骤中出现了巨大的延迟,即使在其他线程中实现也是如此。谢谢回答,不要再增加额外的负面因素了。 - Jose M Lechon
有什么区别?你是通过编程将视图添加到滚动视图中,还是所有视图都在XML布局中定义?孩子们有什么不同?它们只是不同的内容还是完全不同的布局?我对Facebook一无所知,但是Google+和Gmail我会使用ListView。 - Kylelem62
我已经找到了我的错误所在。由于我正在处理项目内的图片,每当每张图片可见时,我都会遇到巨大的延迟,即使使用Volley库和DiskCache进行实现也是如此。我尝试使用Scrollviews进行实现,对于少量项目可以解决问题,但对于大量列表则无法奏效。我不知道有关 JakeWharton DiskLruCache的信息。将JackeWharton库与Volley相结合后,我的延迟问题得到了解决,然后ListView就可以完美地使用它了。归根结底,我的图片处理方法是错误的。谢谢。 - Jose M Lechon
1
@Kylelem62,你的回答节省了很多时间。谢谢。 - Nafis Ahmad
除了以下这点,我同意你的所有观点:“然而,如果每个子项都完全不同,则ScrollView是最好的选择。”ListView(或具体地说Adapter#getItemViewType(int))支持不同的listItem类型。它还提供了与上述相同的回收利益。因此,我认为拥有不同的listitem类型并不是使用ScrollView的理由。 - sudocoder
如果每个视图都不同,您将不得不将每个视图硬编码到ListAdapter中。除非您在滚动视图中有大量视图,否则ListView仍然是最好的选择。 - Kylelem62

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