Android 使用for循环将数据加载到数组中
我试图从Post类填充一个图像URL数组,但该活动返回一个空白页面。我做得对吗。对不起,我正在学习android,我知道的不多 ArrayList PostDetails=新建ArrayList()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()];
对于(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
中