处理空列表 - 最好使用 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 中显示 Arraylist 的列表视图