1

AsyncTaskを使用してFlipViewに画像を読み込もうとしていますが、続行する方法がわかりません。ドローアブルからロードする画像が20個あるため、アプリケーションが強制終了されるため、AsyncTaskを使用する必要があります。

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

コメントから述べたように、doInBackgroundに画像をロードし、postExecuteのviewflipperにimageviewsを追加する代わりに、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));
        }
    }
于 2012-07-30T23:51:01.663 に答える
0

イベント/UIスレッドに影響を与える命令をdoInBackgroundメソッドに追加することはできません。代わりに、publishProgress()メソッドを使用してイベントスレッドに通知し、onProgressUpdate()でビューをflipviewに追加する必要があります。

于 2012-07-27T11:36:10.490 に答える