带有可绘制图像的Android ListView OutOfMemoryError

时间:2015-03-16 17:03:55

标签: android listview imageview out-of-memory android-drawable

我对Android开发很新,遇到了内存问题。在移动方面,我倾向于创建iOS应用程序。我有一个带有列表视图的MainActivity,如下图所示:

screenshot

我有9个会话,当我有相同的图像时它会平滑滚动但是当我使用9个不同的图像时它会打得很响,当我走到列表的底部时,我得到了这个OutOfMemoryError错误:

java.lang.OutOfMemoryError
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
        at android.content.res.Resources.loadDrawable(Resources.java:2110)
        at android.content.res.Resources.getDrawable(Resources.java:700)
        at ly.mann.kevinmann.transformingwork.CellAdapter.getView(CellAdapter.java:57)

我已经在这里阅读了类似的一些答案,但我对下一步该做什么感到有点迷茫。

我在适配器中用来显示图像的代码是:

ObjSession cellData = mSessions.get(position);

    if(cellData != null){

        // Get real header image with fall back
        String uri = "@drawable/" + cellData.mPreview ;
        Drawable res;
        int imageResource = mContext.getResources().getIdentifier(uri, null, mContext.getPackageName());
        try{
            res = mContext.getResources().getDrawable(imageResource);
        }
        catch(Resources.NotFoundException e) {
            imageResource = mContext.getResources().getIdentifier("@drawable/following", null, mContext.getPackageName());
            res = mContext.getResources().getDrawable(imageResource);
        }

        holder.previewImageView.setImageDrawable(res);
        holder.titleLabel.setText(cellData.mTitle);
        holder.introLabel.setText(cellData.mIntro);
    }

任何帮助都会很棒。

编辑:我已尝试按照以下评论中列出的可能重复进行操作 - Android OutOfMemoryError:?
解决方案不能解决我的问题。我还尝试将图像缩小,将我对MDPI的图像移动到HDPI,将LDPI移动到MDPI。

0 个答案:

没有答案