在NavigationDrawer中使用ListView或RecyclerView?

时间:2015-07-28 12:03:22

标签: android android-listview android-recyclerview

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

即使您可以看到定义

的RecyclerView的类概述
  

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

我们的导航抽屉有固定数量的物品。

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

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

答案 2 :(得分:1)

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

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