从另一个Activity上生成的AsyncTask更新ListView

时间:2011-11-25 12:28:29

标签: android callback android-listview android-asynctask

我有两个活动“EventsList”,它扩展了ListView和一个“CreateEvent”活动。用户可以从列表中选择“事件”并在CreateEvent活动中编辑它们。当用户单击保存CreateEvent而不是生成AsycTask以将数据传递到Web服务时,获取响应并将响应解析到数据库中。

我的问题是我不知道如何将AsycTasks onPostExecute()的结果传递给EventsList活动。我尝试刷新StartActivityForResult上的列表,但此时线程通常还没有完成。

那么,我如何将AsyncTask(由CreateEvent生成)的结果传递给EventsList活动?我没有运气试图使用自定义回调。

Activity Interaction Diagram

修改

我真的不热衷于使用全球旗帜或adapter。我确信最好使用回调/监听器以某种方式完成。这样,只有在绝对必要时才会更改或通知列表。

3 个答案:

答案 0 :(得分:0)

我认为如果您在list adapter of EventsList填充AsyncTask活动的数据(因为适配器具有全局引用),而onPostExecute()仅提供finish() the CreateEvent activity的{​​{1}},这将使您EventsList's onActivityResult() 1}}现在只需拨打notifydatasetChanged() for adapter

答案 1 :(得分:0)

来自EventsList startActivityForResult“CreateEvent”。

在异步任务中将数据放入putExtra,以防您要传输的大型或复杂数据类型使用应用程序级数据存储或静态实例。

事件的onActivityResult中的

通过putExtra或静态intent读取数据。

答案 2 :(得分:0)

您可以随时使用BroadcastReceiver,并从AsyncTask的onPostExecute()广播完成操作,以及您希望活动接收的任何内容。如果需要在结果中传递对象,请创建一个实现Parcelable的模型对象,并在意图中将Parcelable作为额外内容发送。