0

在我的代码中,我做了这样的事情

// Start AsyncTask - And load Network data into an Object
// Set ListAdapter with Object from Task.

但是, TheTask永远不会在ListAdapter尝试设置之前完成,所以它是null.

在 中设置适配器onPostExecute不是一个选项,因为这Task是它自己的类并且在其他领域中使用。

我认为这里的主要问题AsyncTask. 有没有更好的方法来做到这一点?

4

3 回答 3

2

您可以创建一个侦听器接口并让您的活动实现该接口。当异步任务完成时,即在 onPostExecute 调用接口的方法时,如果注册,活动将收到回调。

于 2013-05-23T17:35:36.880 回答
1

将评论转换为答案

constructor您可以在其中创建 a ,它将从中获取您需要的AsyncTask任何内容,例如 a和 a或您选择的内容。然后,当您创建一个实例时,您可以传入这些paramsActivityContextListAdapterbooleanAsyncTaskparams

MyTask myTask = new MyTask(MainActivity.this, booleanVar);  // passing Context and boolean
myTask.execute();

然后在你的AsyncTask你可以检查某个变量是否是null或检查boolean值来决定做什么onPostExecute()

然后你可以有一个为需要使用它的另一个constructor处理不同的集合paramsActivities

于 2013-05-23T18:42:48.917 回答
0

始终在创建 ListView 后立即设置 ListView 的适配器(通常在 onCreate 或 onCreateView 中,具体取决于您的布局)。

适配器的内容是另一回事。您可以(并且应该)使您的适配器最初为空,并仅在 AsyncTask 完成时向其添加实际数据,例如在 onPostExecute 中。之后,同样在 onPostExecute 中,调用 adapter.notifyDataSetChanged() 来显示 Objects。

于 2013-05-23T18:43:01.873 回答