Android 使用for循环将数据加载到数组中

Android 使用for循环将数据加载到数组中,android,arrays,for-loop,image-caching,Android,Arrays,For Loop,Image Caching,我试图从Post类填充一个图像URL数组,但该活动返回一个空白页面。我做得对吗。对不起,我正在学习android,我知道的不多 ArrayList PostDetails=新建ArrayList() 对于(int index=0;index您应该等待任务完成,您可以将最后一部分放入onPostExecute方法中 protected void onPostExecute( ) { String[]imageUrls= new String[PostDetails.size()];

我试图从Post类填充一个图像URL数组,但该活动返回一个空白页面。我做得对吗。对不起,我正在学习android,我知道的不多

ArrayList PostDetails=新建ArrayList()


对于(int index=0;index您应该等待任务完成,您可以将最后一部分放入
onPostExecute
方法中

protected void onPostExecute( ) {
    String[]imageUrls= new String[PostDetails.size()];

   for (int index=0;index<imageUrls.length;index++){
       imageUrls[index]=PostDetails.get(index).getImag();
   }
}
受保护的void onPostExecute(){
String[]imageUrls=新字符串[PostDetails.size()];

对于(int index=0;index您应该等待任务完成,您可以将最后一部分放入
onPostExecute
方法中

protected void onPostExecute( ) {
    String[]imageUrls= new String[PostDetails.size()];

   for (int index=0;index<imageUrls.length;index++){
       imageUrls[index]=PostDetails.get(index).getImag();
   }
}
受保护的void onPostExecute(){
String[]imageUrls=新字符串[PostDetails.size()];

对于(int index=0;indexNunu的答案是正确的,但我想对此进行一点扩展。假设
loadingTask
是一个
AsyncTask
,因此当调用
execute
时,
doInBackground
中的代码将异步执行。创建和填充数组的代码将执行与填充
PostDetails
并行,我假设它填充在
loadingTask
中。由于数组循环执行得非常快,它将在
loadingTask
执行的网络操作之前很久完成。因此,您的页面是空白的,因为您在
之前已在数组中循环e> PostDetails
已填充


解决方案正如Nunu所建议的,就是将
imageUrls
数组的填充移动到
AsyncTask
onPostExecute
方法中。此外,使用此数组的任何UI操作也应该移动到
onPostExecute
Nunu的回答是正确的,但我想解释一下假设
loadingTask
是一个
AsyncTask
,因此当调用
execute
时,
doInBackground
中的代码将异步执行。创建和填充数组的代码将与填充
PostDetails
的代码并行执行,我假设在
loadingTask
中填充。由于数组循环执行速度非常快,因此在
loadingTask
执行网络操作之前很久,它就会完成。因此,您的页面是空白的,因为您在填充
PostDetails
之前已在数组中循环

解决方案正如Nunu所建议的,即将
imageUrls
数组的填充移动到
AsyncTask
onPostExecute
方法中。此外,使用此数组的任何UI操作也应移动到
onPostExecute