【发布时间】: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