【问题标题】:ListView with empty view and a loading view具有空视图和加载视图的 ListView
【发布时间】:2014-12-16 22:34:38
【问题描述】:

我有一个 ListView 可以从网络上检索其数据。我希望 ListView 在从 Web 检索数据时显示一个旋转的进度条,如果没有获取数据,我想显示一个简单的文本“无数据”,否则它将显示获取的数据。

我到处寻找示例,甚至 Google 建议使用进度条作为列表的空白视图。 (见example

真的没有意义,因为我需要加载视图 + 空视图。有没有描述如何做到这一点的例子?或者,也许任何人都可以阐明实现这一点的正确步骤?

【问题讨论】:

  • 对 EmptyView 使用 TextView,对 Progress 使用 Dialog,可能由 AsyncTask 驱动。
  • 我不能使用对话框,我特别想使用 ProgressBar。我正在创建的所有内容都包含在带有选项卡的视图寻呼机中。选项卡包含包含 ListViews 的片段。每个 ListView 都会管理自己的 ProgressBar。
  • OK,ProgressBar 可以放到 ListView 头部了。或在其页脚中。或者在页眉中添加 ProgressBar,在页脚中添加“Loading...”。反之亦然。
  • 好的,页眉和页脚可以根据需要设置为可见/不可见/消失。它们可以是 ListView 的外部(只需将它们放在 ListView 的上方和/或下方,而不是通过 addHeaderView/addFooterView 添加它们)。
  • 我已经按照您的建议做了一个临时(也许是永久性的?)解决方案,基本上我在 ListView 下方添加了一个包含 ProgressBar 的 FrameLayout,我最初将其设置为 GONE。当我执行 http 请求时,我让它可见,当结果回来时,我让它再次消失。我希望有一个更友好(并且可能更可重用)的解决方案,但现在应该这样做。如果其他人有建议,我很乐意听取他们的意见。谢谢时髦

标签: android android-listview android-progressbar


【解决方案1】:

您可以创建一个用于“加载”视图的布局(例如,带有不确定进度条和文本视图的绝对布局)并将其用作ListView 的页脚视图。

然后根据需要添加和删除页脚。

// get reference to the footer view
View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);

//add the footer view
listView.addFooterView(footerView);

//remove the footer view
listView.removeFooterView(footerView);

Reference 1, Reference 2

【讨论】:

  • Funkystein 已经在上面提到过,虽然这是一个很酷的想法,但它有很多设计限制。我正在尝试设计一个加载集中在列表视图中间的设计。不在顶部或底部。如果列表也为空,页脚将显示在顶部。另外值得一提的是,Footer + Header 算作列表视图中的一行,这意味着如果您有一个标题并且想要检索第一个 REAL 行,您将执行 .get(1)。如果我采用这种方法,这不是一个大问题,但是因为页脚/页眉只会在获取数据时显示,但仍然是设计限制。
  • 进度条重叠(基本上在顶部)列表视图会不会是一个问题?此外,您是在寻找仅用于初始加载数据的加载视图,还是在将更多数据加载到现有数据的列表中时需要它来显示/隐藏?
  • 见上面我对 Funky 的回复。我的主要目标是在列表中有 0 个项目时(更新前)显示初始加载。更新时,我有一个滑动刷新布局,显示它正在加载。感谢您的建议
  • 啊,我没看到。 Funky 为您的需求提供了正确的答案。我以为你在不断地加载数据,就像无限滚动一样。
  • 感谢您的建议,先生 :)
猜你喜欢
  • 1970-01-01
  • 2016-12-27
  • 2012-07-25
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
相关资源
最近更新 更多