0

我使用一个将 bimap 设置为 ImageView 的库:

库: https ://github.com/nostra13/Android-Universal-Image-Loader

imageLoader.displayImage(urlString, imageView,  options);

它做一个异步任务做下载并将这个位图设置到imageView中。问题是,在它之后,我需要使用 sqlite 进行存储:

 BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
    Bitmap photo = bitmapDrawable.getBitmap();
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] imageInByte = stream.toByteArray();
    db.updateUser(imageInByte);
    db.close();

因此,当 imageLoader 执行任务时,程序会存储默认图像而不是下载的图像。此外,将此代码放入 Asyntask 中并尝试将位图存储在 onPostexecute(); 在图书馆里给我一个错误。

我不想使用另一个库,也许循环应该很好,我试过:

while (((BitmapDrawable)imageView.getDrawable()).getBitmap() == BitmapFactory.decodeResource(getResources(), R.drawable.ic_stub)) {
Log.d("MyApp", "whileloop");
}

那么,如何创建一个“等待”/循环来检查图像何时下载并存储呢?

4

1 回答 1

1

这不就行了吗?

imageLoader.loadImage(imageUri, targetSize, displayOptions, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        loadedImage.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] imageInByte = stream.toByteArray();
        db.updateUser(imageInByte);
        db.close();
    }
});
于 2013-02-27T03:52:05.260 回答