ListView に画像のサムネイルを表示しようとしています。画像は SD カードの Camera フォルダにあります。BitmapFactory.decodeFile を使用して画像を読み込んでいます。ファイルのデコード中に ProgressDialog を表示したいと思います。最初に ProgressDialog を表示してから、for ループで decodeFile を呼び出そうとしています。ProgressDialog は、for ループの後まで表示されません。ProgressDialog が表示される前に、decodeFile の呼び出しが実行されているように見えます。
for ループの前に ProgressDialog を表示するにはどうすればよいですか?
public class ActivityProgressBar extends ListActivity {
private Vector<RowFileData> fileDataDisplay = null;
RowFileData fileData;
ProgressDialog progressDialog = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading thumbnails...");
fileDataDisplay = new Vector<RowFileData>();
File currentDirectory = new File("/mnt/sdcard/dcim/camera");
File[] currentDirectoryFileList = currentDirectory.listFiles();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 16;
progressDialog.show();
for(int i=0; i<currentDirectoryFileList.length; i++)
{
File currentDirectoryFile = currentDirectoryFileList[i];
fileData = new RowFileData(BitmapFactory.decodeFile(currentDirectoryFile.getPath(), opts), currentDirectoryFile.getPath());
fileDataDisplay.add(fileData);
Log.v("myLog", "inside for loop");
}
}
private class RowFileData
{
protected Bitmap rowBitmap;
protected String rowFileName;
RowFileData(Bitmap bitmapPreview, String fileName)
{
rowBitmap = bitmapPreview;
rowFileName = fileName;
}
}
}
for ループの後に ProgressDialog が表示されていることを確認するために、progressDialog.dismiss() の呼び出しをコメントアウトしました。読みやすくするために、ListView に画像を表示するコード行を削除しました。ログを使用して、まだ for ループにいることを確認しました。
ありがとう