这是我的情况:
在我的 onCreate()
中,我想创建一个 AsyncTask
来检索服务器的数据并将其存储在 ArrayList
中。
然后在我的 onCreateView()
中,我想将该数据放入 ListView
,设置 onItemClickListener
等...
问题是我在 AsyncTask
和 UI 线程之间创建了一个竞争。如果在 AsyncTask
完成检索之前调用了 onCreateView()
,那么我没有正确设置适配器,没有设置 onItemClickListener
,等等……
我想要一些方法来确保在启动 onCreateView()
函数之前等待 AsyncTask
完成执行。这可能吗?我阅读了有关在任务上使用 get()
的信息,但我在执行它时遇到了一些问题。它似乎没有做任何事情。
我想在 onCreate()
中检索数据并在 onCreateView()
中设置适配器的原因(而不是在 onPostExecute( )
的 AsyncTask
), 是我想检索一次数据,并且能够在用户旋转屏幕或导航回该 时创建 View fragment
。
最佳答案
这是一个更好的方法。初始化您的 ListView
并在 onCreate()
中启动您的 AsyncTask
。从服务器获得数据后,您将其添加到提供给适配器的同一个数组中,并调用适配器的 notifyDatasetChanged()
,它负责填充 ListView 。在这里,您还可以使用 ListFragment
,您可以在其中调用 setEmptyText()
来添加列表为空时显示的文本。
关于android - onCreateView() 等待 AsyncTask 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992806/