【问题标题】:Use ListView or RecyclerView in NavigationDrawer?在导航抽屉中使用 ListView 和 RecyclerView?
【发布时间】:2015-10-18 23:27:56
【问题描述】:

对于在 DrawerLayout 中是使用 RecyclerView 还是 ListView 有点困惑。
我阅读了a tutorial,它解释了如何使用 RecyclerView 创建 NavigationDrawer。
根据谷歌:RecyclerView 是
1) 用于显示大型数据集的容器,通过维护有限数量的视图可以非常有效地滚动。
2) 在内部使用布局管理器。布局管理器将项目视图定位在 RecyclerView 中,并确定何时重用用户不再可见的项目视图。为了重用(或回收)视图,布局管理器可能会要求适配器用数据集中的不同元素替换视图的内容。

因为导航抽屉中有一个非常小的数据集(标题 + 一个简短列表),并且所有项目仍然对用户可见,所以我无法从 1) 和 2) 中的回收站视图“功能”中受益。
甚至谷歌也使用了ListView in NavigationDrawer
我想我可以使用ListView.addHeader() 在 DrawerLayout 中为标题创建一个特殊视图。
所以我的问题是我是否应该在 DrawerLayout 中更喜欢 RecyclerView 而不是 ListView ?

【问题讨论】:

    标签: android android-listview android-recyclerview


    【解决方案1】:

    你的解释很好。现在回答您的问题,如果您打算将来在导航抽屉中使用可扩展的列表项,如果您现在使用RecyclerView,则需要准备实现可扩展的recyclerview(默认情况下不存在)。所以在那种情况下ExpandableListView 将是一个更容易实现的解决方案。但是,如果您的抽屉内不需要任何可扩展的项目功能,那么如果您使用的是大型数据集,那么使用 RecyclerView 将是一种更好的方法。正如您所说,您有一个小数据集,我认为如果您使用ListViewRecyclerView,它不会产生太大影响。仍然因为RecyclerView 更灵活,为什么不只使用RecyclerView

    根据您的要求,我建议您导入android design support library,以便您可以使用NavigationView,这样可以更轻松地提供导航抽屉所需的框架以及通过菜单扩展导航项的能力资源。

    【讨论】:

    • 谢谢 我去看看设计支持库。我仍在等待解释我的问题的答案。
    • 我也回答了你的问题。您还有什么具体问题?
    • 好的,我期待一个清晰的解释,比如:“你应该使用 ListView/RecyclerView 因为......”。你只提到“......我认为如果你使用 ListView 或 RecyclerView 不会产生太大影响...... RecyclerView 更灵活,为什么不只使用 RecyclerView 。”对我来说,我不清楚在这种情况下如何从 RecyclerView 的“灵活性”中受益。
    【解决方案2】:

    当我为我的应用开发 Material design 导航抽屉时,同样的问题一直困扰着我。

    你甚至可以看到定义的 RecyclerView 的类概述

    一种灵活的视图,用于为大型数据集提供有限的窗口。

    我们的导航抽屉有固定数量的项目。

    因此,您可能会将public void setHasFixedSize (boolean hasFixedSize) 设置为true。这将使它几乎成为一个 ListView。

    我在抽屉里使用 ListView,你也应该使用 ListView。

    【讨论】:

    • 如果使用 RecyclerView,我确实会将固定大小设置为 true。我仍然更喜欢在 NavigationDrawer 中使用 ListView,因为 RecyclerView 使琐碎的事情(处理来自 Activity 的点击、添加项目分隔符......)太复杂了,如果它几乎没有区别(与 ListView 相比),我认为没有理由选择 RecyclerView。
    【解决方案3】:

    使用导航抽屉非常复杂,谷歌想出了一个更好更简单的方法来实现抽屉NavigationView,你的列表现在应该是一个“菜单”,你可以在单独的 xml 文件中定义,不需要对于适配器了。有关如何实现它的更多信息,请查看官方 android 博客here

    【讨论】:

    • 谢谢我去看看设计支持库,我还在等待解释我问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多