任务完成后设置ListAdapter

时间:2013-05-23 17:25:42

标签: android android-asynctask adapter listadapter

在我的代码中,我做了类似的事情

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

但是,TaskListAdapter尝试设置之前永远不会完成,因此它是null

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

我认为这里的主要问题是Async的{​​{1}}部分。有没有更好的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以创建一个侦听器界面,并使您的活动实现该界面。 当asyntask完成时,即在onPostExecute中调用接口的方法,如果已注册,活动将接收回调。

答案 1 :(得分:1)

将评论转换为答案

您可以在constructor中创建AsyncTask params,其中Activity需要Context ListAdapter,例如boolean和{{1}您选择的或AsyncTask。 然后,当您创建params的实例时,您可以传递这些MyTask myTask = new MyTask(MainActivity.this, booleanVar); // passing Context and boolean myTask.execute();

AsyncTask

然后在您的null中,您可以检查某个变量是boolean还是检查onPostExecute()值,以决定在constructor

中做什么

然后,您可以params为需要使用它的其他Activities处理另一组{{1}}

答案 2 :(得分:0)

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

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