如何从B活动通知A列表数据已被更改?

时间:2011-12-22 14:06:08

标签: android listview android-event

我有一个活动ItemList.java。当用户点击项目时,它会启动新活动,例如ItemDetailActivity.java

我想要做的是,当用户按下ItemDetailActivity.java上的按钮时,它应该告诉ItemList.java刷新列表项。我知道myListAdapter.notifyDataSetChanged()会刷新列表。但ItemList.java如何知道何时更改数据。

我不想使用静态方法或变量。我知道如何使用处理程序,但不知道如何将处理程序传递给其他活动。

我在想的是创建自己的事件/侦听器并与列表关联,因此当事件触发时,则更改列表。广播接收器会帮助我吗?

3 个答案:

答案 0 :(得分:3)

您可以尝试startActivityForResult(intent_to_activity)并在同一itemlist班级中覆盖方法:onActivityResult()。在此方法中,通知数据集会发生变化并且应该反映出来。

答案 1 :(得分:3)

最好的方法是使用观察者模式(参考http://en.wikipedia.org/wiki/Observer_pattern),但你可以在ItemList.java中创建一个包含对myListAdapter.notifyDataSetChanged()的调用的公共静态方法。

答案 2 :(得分:1)

你真的不应该假设Android的旧活动的引用将保持活着。如果这都是基于数据库的,那么您实际上不需要为ItemList进行任何更新。如果不是,您只需在ItemList活动的myListAdapter.notifyDataSetChanged()中调用onResume()即可。