【问题标题】:Using a ViewGroup as a list?使用 ViewGroup 作为列表?
【发布时间】:2015-08-25 16:52:44
【问题描述】:

在某些情况下,最好使用ViewGroup 创建列表,其作用类似于ListViewRecyclerView

例如,我需要在 ViewGroup 中显示项目列表,这是根布局的子级。 根布局是可滚动的(例如ScrollViewNestedScrollView),因此使用另一个滚动的View 来显示列表项是不合适的。

这方面的一个例子可以是在CardView 中显示列表项(当然,在这种情况下,您不会想要太多的列表项,因为卡片并不适用于此)。在卡片中使用滚动布局显然是不对的,尤其是当卡片是滚动根布局的一部分时。

另一个例子是创建一个导航抽屉(当然在 Google I/O 2015 之后,有 设计支持库,所以使用 NavigationView 会简单得多)。但在设计支持库之前,您必须使用要在导航抽屉中显示的项目填充 ViewGroup(可能是 LinearLayout,因为抽屉的根布局必须是可滚动的。有关此场景的更多信息,我问a similar question

问题的关键在于,没有简单的方法可以将ViewGroup 用作列表布局,因此我们中的许多人倾向于使用复杂的解决方案来禁用ListViewRecyclerView 上的滚动。是的,ListView 上的滚动可以被禁用,但通常仍然有一个 Lint 警告。因此,使用ViewGroup 列表也可以被认为是在滚动Views 上禁用滚动的替代解决方案

那么有没有一种简单的方法可以将ViewGroups 用作列表?

【问题讨论】:

    标签: android list android-listview android-recyclerview android-viewgroup


    【解决方案1】:

    受 Google 如何在导航抽屉中填充 LinearLayout 中的列表项的启发,在他们 2014 年的 Google I/O 应用程序中,我创建了一个可以在 ViewGroup 中填充列表项的 Gist。

    The Gist,标题为ViewGroupAdapter, can be found here

    如果这个解决方案变得流行,我将继续更新和改进 Gist。

    【讨论】:

    • 这个适配器的问题在于它不回收视图。因此,如果您有超过 10 个左右的视图,您将开始注意到性能下降。这不是动态内容的可行解决方案。
    • @DavidArgyleThacker 公平点,但我打算将它用于少量项目。如果项目数超过一页,使用滚动视图可能更合适(即ListViewRecyclerView)。不过,我稍后可能会决定添加改进。
    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多