错误的图像从sqlite数据库显示到ListView中

时间:2018-01-28 18:15:37

标签: android listview android-sqlite

我正在使用AsyncTask从服务器下载一些文本和图像。我将文本和图像存储在sq-lite数据库中。我以字节数组的形式存储。

在AsyncTask的post Execute方法中,我将转换图像保存在字节数组中,并使用for循环将它们存储在数据库中。

问题是当我在数据库列表视图中显示数据时,有时会显示正确的图像,但有时会显示错误的图像。我正在使用处理程序将信息延迟到列表视图8秒。我不知道为什么有时它会显示正确的图像,有时它会显示错误的图像。

我做错了什么?如何每次都显示正确的图像。此外,任何人都可以帮助我如何避免日志猫消息:

“跳过XXX帧。应用程序在主线程中做了很多工作。”

我正在使用片段。当应用程序启动时,它将从服务器获取数据,其中包含URL到Image。我正在使用该URL下载图像。将文本和图像存储在数据库中,并在onPostExecute方法的列表视图中显示。

以下是我用过的代码:

// convert from bitmap to byte array

    public static byte[] getBytes(Bitmap bitmap) {

    ByteArrayOutputStream byteArrayOutputStream = 
    new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 0, byteArrayOutputStream);
    return byteArrayOutputStream.toByteArray();

  }

在我正在扩展CursorAdapter类的适配器类中。我从sq-lite数据库获取字节数组并将其转换为图像并将其显示到列表视图。

从字节数组转换为位图的代码如下:

   private static Bitmap getImage(byte[] image) {
    return BitmapFactory.decodeByteArray(image, 0, image.length);
   } 

我将其设置为列出查看项目,如下所示:

    byte [] image = cursor.getBlob(imageColumnIndex);

    if(image == null)
    {

    }else{
        Bitmap bitmap = getImage(image);
        imageView.setImageBitmap(bitmap);
    }

0 个答案:

没有答案