这是我的情况:
在我的onCreate()
中,我想创建一个AsyncTask
来从服务器检索数据并将其存储在ArrayList
中。
然后,在我的onCreateView()
中,我想把那些数据放在ListView
中,设置一个onItemClickListener
等等......
问题是,我正在创建一个AsyncTask
和UI线程之间的竞争。如果onCreateView()
在AsyncTask
完成检索之前被调用,则不会正确设置适配器,也不会设置onItemClickListener
等......
我希望有一种方法来确保在启动onCreateView()
函数之前等待AsyncTask
完成执行。这有可能吗?我读到了使用任务上的get()
,但我在执行它时遇到了一些麻烦。它似乎没有做任何事情。
我之所以想在onCreate()
中检索数据并在onCreateView()
中设置适配器(而不是在AsyncTask
的onPostExecute()
中设置适配器),是因为我想只检索数据一次,并且只需在用户旋转屏幕或导航回该Fragment
时创建视图。
OnItemClickListener
。当没有数据时,只需使用一个没有元素的ArrayList
来初始化列表视图。这样就不会出现任何空指针异常。稍后当数据到达时,你可以将其添加到同一个ArrayList
中并调用notifyDataSetChanged()
。 - sujithOnItemClickListener
的注释有一个快速问题:如果我只在onCreateView()
中调用setOnItemClickListener
,它似乎不起作用。但是,如果我在更新适配器后再添加另一个setOnItemClickListener
调用,它就可以工作了。虽然这并不是什么大问题,但如果您有任何想法,我想知道为什么会发生这种情况。谢谢。 - user2085335ListActivity
还是ListFragment
? - Matt