1

我正在尝试使用 AsyncTask 将图像加载到我的 FlipView 中,但我不确定如何继续。我需要使用 AsyncTask,因为应用程序是强制关闭的,因为我有 20 张图像要从可绘制对象中加载。

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。有什么帮助吗?

4

2 回答 2

1

正如我在评论中提到的那样,我已经通过使用 imageview 数组而不是在 doInBackground 中加载图像并在 postExecute 中的 viewflipper 中添加图像视图来解决我的问题。我还添加了一个进度对话框来显示加载时间,而不是在我的应用程序中显示空白屏幕。感谢所有回复的人。

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));
        }
    }
于 2012-07-30T23:51:01.663 回答
0

您不能将指令添加到影响事件/UI 线程的 doInBackground 方法。相反,您应该使用 publishProgress() 方法来通知事件线程,并在 onProgressUpdate() 中将视图添加到翻转视图。

于 2012-07-27T11:36:10.490 回答