【问题标题】:Android Widgets: onDataSetChanged not called by updateAppWidget()Android 小部件:updateAppWidget() 未调用 onDataSetChanged
【发布时间】:2012-09-06 22:52:37
【问题描述】:

我有一个运行良好的基于​​ ListView 的小部件,它依赖于 JSON Web 服务调用来填充自身。我有一个效果很好的刷新按钮,并强制从网络重新加载。我通过使用自定义广播来做到这一点,然后依次调用 onDataSetChanged() 和 updateAppWidget()。我发现,当 Android 自动更新小部件时(基于时间间隔设置它我的 XML 定义),似乎只调用了 updateAppWidget(),并且我的 onDataSetChanged() 函数从不运行,导致更新的时间戳(我在每个 updateAppWidget() 调用中更新),但数据陈旧。

如何强制 Android 在给定的时间间隔调用或触发 onDataSetChanged()?

【问题讨论】:

  • 你有没有在远程适配器上调用notifyDataSetChanged()
  • 没有。我什么时候/应该这样做?好像自动更新代码没有给我回调?
  • 我认为,在更新时,你应该对你的适配器有一些参考(不确定你想如何保存它),然后可以调用它的通知。 onDataSetChanged() 仅在通知发送后调用。
  • 要清楚,在我的 AppWidgetProvder.onUpdate() 中,我应该使用小部件 ID 和 ListView 的 ID 调用 AppWidgetManager.notifyAppWidgetViewDataChanged 来更新?现在试试看:)
  • 听起来不错。如果没有,您可能必须直接在列表的适配器上调用它。 (myListView.getAdapter().notifyDataSetChanged())

标签: android android-widget widget


【解决方案1】:

原来我需要在我的 AppWidgetProvider.onUpdate() 方法中调用 AppWidgetManager.notifyAppWidgetViewDataChanged(widgetId, view)

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 2019-01-05
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2012-08-23
    • 2013-10-22
    相关资源
    最近更新 更多