【发布时间】:2014-10-02 14:28:11
【问题描述】:
如果我在与我的 ListView 关联的自定义适配器上调用 notifyDataSetChanged(),则所有视图都应自行刷新(将调用 getView())。
现在我有一个正在监听事件的 BroadcastReceiver。当事件触发时,必须刷新 ListView。我怎样才能做到这一点?
谢谢!
【问题讨论】:
-
"现在我有一个正在监听事件的 BroadcastReceiver" -- 事件是什么,
BroadcastReceiver是如何注册的(清单或registerReceiver())? -
嗨,动态注册在包含 ListView 的 Activity 中,事件是来自 DownloadManager 的 ACTION_DOWNLOAD_COMPLETE。
-
在广播接收器实现的 onReceive 中,您必须:修改自定义适配器的底层数据并调用 notifyDataSetChanged 或创建新的自定义适配器并将其设置为列表视图
-
@Selvin 如果我可以从接收器访问列表视图,那会很容易。我可以调用 getAdapter。我不知道如何从接收器访问列表视图(避免静态或吸气剂)
-
你说你有来自活动的动态接收器......所以我认为代码看起来像blog.vogella.com/2011/06/14/android-downloadmanager-example 然后你有访问内部的列表视图 onReceive (findViewById(R .id.id_of_listview)应该可以工作,因为这个实现将不是 Activity 的静态内部类)
标签: android listview broadcastreceiver notifydatasetchanged