android - onCreateView() 等待 AsyncTask 执行?

标签 android android-asynctask

这是我的情况:

在我的 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/

相关文章:

android - 无法接收 UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED 的广播 Intent

android - developer.android.com/training bitmapfun 项目

android - Android AsyncTask 和 realm.executeTransactionAsync 的区别

java - 从 PlaceHolderFragment : "' com. 执行 AsyncTask example.Activity.this' 无法从静态上下文引用”

android - 从 AsyncTask 更新 Activity

android - getcontentresolver() 未定义类型

android - 在 Xamarin.Forms 中处理 Android 推送通知操作

Android Exoplayer : What is 'playWhenReady' in "onPlayerStateChanged(boolean playWhenReady, int playbackState)" method

android - 创建自定义进度条

android - 在选项卡开关中保存 fragment 状态