42

谁能解释滚动视图和列表视图之间的区别?什么时候用哪一个?哪个更有效?

4

6 回答 6

31

ScrollView用于放置不同或相同的子视图或布局,都可以滚动。

ListView用于将相同的子视图或布局作为多个项目。所有这些项目也是可滚动的。

Simply ScrollView 既适用于同质集合,也适用于异构集合。ListView 仅用于同类集合。

于 2012-03-22T10:51:24.387 回答
27

他们完全不同。

ScrollView是一个简单的滚动容器,可用于滚动放入其中的任何内容,可能是项目列表,也可能不是。

http://developer.android.com/reference/android/widget/ScrollView.html

ListView是专门为保存列表而设计的,其中项目通常看起来相同(或至少遵循一种模式,例如部分标题)。ListView 还被设计为连接到某种数据源、SQLite、数组、内容提供程序等。ListView 可以扩展以处理大量列表项。

http://developer.android.com/resources/tutorials/views/hello-listview.html

如果您有需要在列表中显示的数据,请使用 ListView。如果您只需要滚动内容,那么 ScrollView 可能就足够了。

于 2012-03-22T10:48:32.870 回答
3

列表显示:-

在 ListView 中,您可以轻松管理要在列表中显示的 xml 中项目的布局。

您需要在显示列表中告诉适配器您想要的项目。

您可以通过重写 Adapter 的 getItemViewType() 方法,根据您的要求设计同构视图和异构视图。

在 ListView 中,列表中的项目是根据屏幕大小创建的。即在运行时滚动列表时,会创建多少个项目可以出现在屏幕上。显示一次的视图在移出屏幕时会被缓存,当列表滚动回之前的状态时,会显示相同的视图,但这次视图不会创建,而是从缓存中获取。

滚动视图:-

缓存概念不适用于 ScrollView。

所有视图在进入屏幕时立即创建,并且在滚动时移出屏幕时不会被缓存。它们存在于内存(主)中,可能导致内存泄漏,因为创建的对象数量不会被垃圾收集器销毁,因为它们被引用直到您在同一页面上。

尽管您可以创建同质视图和异构视图。如果您的列表中要显示更多项目,那么无论您是使用 xml 设计还是使用 Java 代码动态创建,管理布局都会很乏味。

如果您有一个不包含项目列表的页面,例如注册表单、预订表,但该视图大于屏幕尺寸,则最好使用滚动视图,然后将 ScrollView 作为父视图还请记住,ScrollView 只能有一个直接子布局/视图。

于 2016-12-17T10:37:32.777 回答
2

ScrollView 只是将其内容放在可滚动容器中,您只能通过向其添加视图来编辑其内容。

ListView 是一个使用适配器的类,它处理为数据对象创建视图,您只需要编辑数据,并且布局修改由适配器自动完成。

当您的屏幕(例如:具有多个字段的表单)不适合小型设备上的一个屏幕时,应该使用 ScrollView,因为这样的滚动视图为用户提供了向下滚动的可能性。

表示数据集时应使用 ListView。

您可以在http://developer.android.com/guide/index.html阅读这些内容

于 2012-03-22T10:49:36.867 回答
0

Since an image worth a thousand words, here are perfect real life examples:

Listview is like the Kijiji app

Scrollview is like the EBay app

Also, see a scrollview like a billboard or a wall, where you can put bunch of different stuff on it.

And a listview is more like a result page: results are all of same nature, therefore they fit perfectly in a listview. Like a contacts list: they all share the same structure; phone number name address, etc....

于 2014-12-08T15:57:17.460 回答
0

ListView 由包含 DataSource 的 Adapter 支持。这使您可以轻松地按行显示数据。

ScrollView 允许您将内容放入其中,如果内容超出 ScrollView 的大小,它将允许用户滚动。

它们都有各自的用途,但这取决于您要做什么。

于 2012-03-22T10:48:21.453 回答