首页 文章

在NavigationDrawer中使用ListView或RecyclerView?

提问于
浏览
3

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

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

3 回答

  • 2

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

  • 0

    当我为我的应用程序开发Material Design导航抽屉时,同样的问题引起了我的注意 .

    即使你可以看到定义的RecyclerView的类概述

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

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

    所以,可能你会将 public void setHasFixedSize (boolean hasFixedSize) 设置为true . 这将使它几乎成为一个ListView .

    我在抽屉中使用ListView,您还应该使用ListView .

  • 1

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

    根据您的要求,我建议您导入android design support library,以便您可以使用 NavigationView ,通过提供导航抽屉所需的框架以及通过菜单资源为您的导航项目充气的功能,可以更轻松地使用 NavigationView .

相关问题