ListFragment 相对于 ListView 或普通 Fragment 的优势

Posted

技术标签:

【中文标题】ListFragment 相对于 ListView 或普通 Fragment 的优势【英文标题】:Advantage of ListFragment over a ListView or normal Fragment 【发布时间】:2013-07-22 06:52:11 【问题描述】:

我有一个活动,其中包含在左侧运行的项目菜单,这些项目是 textViews。当用户选择其中一个 textViews 时,它将在活动区域​​的其余部分放置一个 listView,占据屏幕的其他 2\3。当用户在页面的左侧菜单上触摸不同的 textView 时,它将打开不同的相应列表视图。

为此,我正在考虑在屏幕上放置一个大列表视图。但是另一种方法是在活动中使用常规 listView 代替,我可以在其中放置一个列表片段并在片段之间切换。

第三种选择是在其中放置一个片段,并在该片段中放置一个 listView。我以前从未使用过 ListFragment。

考虑到没有方向变化,哪个是最好的计划?活动将被锁定在垂直/纵向方向。这将在平板电脑上运行,而不是在手机等较小的设备上使用。

我不知道我是否需要使用加载器,因为列表不会很长而且列表的内容只是文本。

与其他选择相比,使用 listFragment 有什么优势吗?

此活动的三个选择:

    带有ListView 的活动

    带有ListFragment 的活动

    带有片段的活动,上面有ListView inside of theFragment`

【问题讨论】:

【参考方案1】:

ListFragment 基本上是一个稍微专业化的Fragment,它通过提供一些方便的方法(例如getListView(),因此您无需搜索,从而可以更轻松地处理Fragment 布局中的ListView对于您自己的小部件,一种获取ListView 等适配器的方法。如果您需要FragmentListView,请使用ListFragment。所以最后是在ListViewListFragment 之间做出决定。

在这两个选项之间,考虑到您的情况,我会简单地使用ListView,因为它很简单。 Loader 的需要不是问题,因为您可以将ActivityLoaderManager 用于ListView

但是,您没有提到应该如何处理 BACK 按钮。如果您想为用户提供通过他的选择导航返回的可能性,请使用Listfragment 从系统中免费获取。

【讨论】:

您是否有带有选项 3 的遗留代码,方便方法是否值得重构? @Martin 在包含列表的片段和 ListFragment 之间切换首先应该不会太难。最终由你决定,如果我已经有一个正常工作的片段,我不会打扰。

以上是关于ListFragment 相对于 ListView 或普通 Fragment 的优势的主要内容,如果未能解决你的问题,请参考以下文章

在 ListFragment 中使用自定义 ListView

处理空列表 - 最好使用 ListFragment 或 Fragment+ListView?

Android开发笔记(13)——ListFragment

ListFragment:运行时错误“您的内容必须有一个 id 属性为 'android.R.list' 的 ListView

毕加索在 ListFragment 中有很多大位图

ListFragment 错误