我正在尝试使用AsyncTask将图像加载到我的FlipView中,但我不知道如何继续。 我需要使用AsyncTask,因为应用程序是强制关闭的,因为我有20个图像要从drawables加载。
private class asyncImage extends AsyncTask<Void, Void, Void>{
int i;
@Override
protected Void doInBackground(Void... params) {
for (i=0;i<imageID.length;i++){
image = new ImageView(getBaseContext());
image.setId(i);
image.setImageResource(imageID[i]);
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.border));
image.setScaleType(ImageView.ScaleType.FIT_XY);
FlipV.addView(image);
}
return null;
}
protected void onPostExecute(Void result){
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.border));
image.setScaleType(ImageView.ScaleType.FIT_XY);
for(int x=0;x<imageID.length;x++){
FlipV.addView(???); //How to add images into FlipView?
}
}
}
我坚持将图像添加到FlipView。有什么帮助吗?
答案 0 :(得分:1)
正如我在评论中提到的,我已经通过使用imageview数组来解决我的问题,而不是在doInBackground中加载图像并在postExecute中的viewflipper中添加imageview。我还添加了一个进度对话框,以显示加载时间而不是我的应用中的空白屏幕。感谢所有回复的人。
private class asyncImage extends AsyncTask<Void, Void, Void>{
int i;
@Override
protected Void doInBackground(Void... params) {
for (i=0;i<imageID.length;i++){
image[i] = new ImageView(getBaseContext());
image[i].setImageResource(imageID[i]);
image[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.border));
image[i].setScaleType(ImageView.ScaleType.FIT_XY);
}
return null;
}
protected void onPostExecute(Void result){
for (int x=0;x<imageID.length;x++){
FlipV.addView(image[x]);
}
count = 1;
progDialog.dismiss();
txItem.setText(Integer.toString(count) + "/" + (imageID.length));
}
}
答案 1 :(得分:0)
您无法向doInBackground方法添加影响事件/ UI线程的指令。相反,你应该使用,publishProgress()方法来通知事件线程,并在onProgressUpdate()中添加视图到flipview。