【问题标题】:Difference between ScrollView and ListViewScrollView 和 ListView 的区别
【发布时间】:2012-04-06 22:04:31
【问题描述】:

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

【问题讨论】:

    标签: android android-listview android-scrollview


    【解决方案1】:

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

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

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

    【讨论】:

    • 基于适配器,ListView 可以与 ScrollView 一样异构。不同之处在于 ListView 的内容由适配器支持,而 ScrollView 与单个 View/ViewGroup 子一起工作,当然这也可以通过代码构建。
    • 这个答案实际上忽略了一个重要的点,即在 ListView 中,视图是按需创建的。 ListView 中的视图被回收,并且视图层次结构中的视图永远不会超过屏幕上可以显示的视图。使用 ScrollView,您的所有视图都在内存中,并且在层次结构中,即使它们没有显示在屏幕上。您不会获得 View 回收,也没有适配器支持。
    • "ListView is only for homogeneous collection" :这点是不正确的,误导了开发者。 ListView 也可以从 api 级别 1 开始填充异构视图。
    【解决方案2】:

    它们完全不同。

    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 可能就足够了。

    【讨论】:

      【解决方案3】:

      列表视图:-

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

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

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

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

      滚动视图:-

      缓存概念不适用于 ScrollView。

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

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        表示数据集时应使用ListView。

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

        【讨论】:

          【解决方案5】:

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

          一个 ScrollView 允许你在里面放内容,如果内容超过了 ScrollView 的大小,它就会允许用户滚动。

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

          【讨论】:

            【解决方案6】:

            由于一张图片价值一千字,这里有完美的现实生活示例:

            Listview 就像 Kijiji 应用程序

            Scrollview 就像 EBay 应用程序

            另外,查看像广告牌或墙壁这样的滚动视图,您可以在其中放置一堆不同的东西。

            列表视图更像是一个结果页面:结果都具有相同的性质,因此它们非常适合列表视图。就像一个联系人列表:它们都共享相同的结构;电话号码姓名地址等……

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-12-06
              • 1970-01-01
              • 2011-06-13
              • 2016-07-13
              • 1970-01-01
              • 2013-10-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多