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

Posted

技术标签:

【中文标题】处理空列表 - 最好使用 ListFragment 或 Fragment+ListView?【英文标题】:Handling empty lists - better to use ListFragment or Fragment+ListView? 【发布时间】:2015-02-09 08:56:22 【问题描述】:

我有一些疑问。我正在尝试使用列表制作应用程序。我做了一个,但 ListAdapter 扩展了 BaseAdapter 和 ListView。

然后我意识到还有ListFragment。并且使用片段,您可以轻松地显示消息“空列表”。例如,我想要做的是一个项目列表以及与这个 single_item.xml 关联的每个项目。我看过几个例子,但它们之间存在差异,我都不好选择。

执行此操作的更新方法是哪种并且性能最佳? ListFragment 比 ListAdapter extends BaseAdapter 好吗?

提前致谢。

【问题讨论】:

Are ListFragment better than ListAdapter hmmm 勺子比球好吗?您是指 ListFragment 中的 ListView 和 ListView 吗?还是很难比较 【参考方案1】:

ListFragment 本质上提供了与布局包含单个 ListView 的 Fragment 交互的快捷方式(默认情况下没有其他内容)。据我所知, ListFragment 没有提供任何性能优势。如果您想了解更多关于类的功能,可以查看源代码here。

我的偏好是避免使用 ListFragments - 如果屏幕的布局需要更改,我发现它们不灵活,而且它们使用稍微不同命名的 API,可能有点难以记住(onListItemClick,与标准的 onItemClick 回调以适配器视图为例)。

Here is a good article 描述了如何处理空的 ListView。您正在寻找 ListView 的setEmptyView(View) 方法。这允许您指定当 ListView 为空时要显示的视图。

【讨论】:

所以如果我想制作一个列表并且它是空的。我仍然使用我的 ListAdapter extends BaseAdapter 和 ListView + 一个 Fragment 来显示一条消息列表是空的? (对不起我的英语不好) 是的,这绝对是可能的。 Here is a good article 描述了如何处理空的 ListViews。您正在寻找 ListView 的setEmptyView(View) 方法。将此评论也复制到主要答案中。 但是这个例子是使用 ViewStub 的。宽度Fragments也是一样的吗? 该示例中的 ViewStub 表示当 ListView 为空时要显示的视图。 Cyril 的示例是使用具有自定义布局(以便能够包含空布局)的 ListActivity,这类似于 ListFragment。如果您像他一样在 ListFragment 的 xml 布局中提供空视图,则可以为空视图提供任何 View 子类。如果您改为使用常规的 Fragment + ListView,则同样适用 - setEmptyView 可以将任何 View 子类作为参数,因此您不受限于使用 ViewStub。

以上是关于处理空列表 - 最好使用 ListFragment 或 Fragment+ListView?的主要内容,如果未能解决你的问题,请参考以下文章

列表项单击时 ListFragment 不会替换 ListFragment

如何在 ListFragment 中使用 setEmptyView() 和自定义列表布局

ListFragment 错误

不要在 ListFragment 中显示 Arraylist 的列表视图

ListFragment(或 Fragment)中的 BaseAdapter 不起作用

Android五天乐(第三天)ListFragment与ViewPager