在AsyncTask中填充ViewFlipper

时间:2012-07-27 11:21:09

标签: android android-asynctask viewflipper

我正在尝试使用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。有什么帮助吗?

2 个答案:

答案 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。