0

在我的 GridView 适配器中,我试图有效地加载图像,所以我一直在使用 Picasso 2.5.2(它允许通过资源 id 加载)。

Picasso.with(mContext)
                .load(resId)
                .noFade()
                .resize(newSize, newSize)
                .into(imageView);

但是,当我通过此消息传入 resourceId 时,它总是给出一个空白图像。

SkImageDecoder::Factory returned null

在我检查 Picasso Github 页面之前,我想我会尝试使用 Framework 调用:

imageView.setImageBitmap(BitmapFactory.decodeResource(App.get().getResources(), resId));

App.get() 返回我的应用程序单例,因此 Context 是合法的。我还尝试在 getView 参数中从父级传递上下文并传递一个 Activity 上下文。记录 resId 向我显示了可绘制对象的正确 id,但它仍然无法正常工作,但这有效:

imageView.setImageResource(resId);

...但这不好,因为我没有机会通过以较小尺寸加载图像来保留内存。

我已经在 Genymotion 和真实设备上进行了尝试,结果相同。

所以上下文和资源 ID 在 Logcat 中都很好,这里还有什么问题?

4

1 回答 1

0

资源id是drawable的整数值。尝试以下代码获取资源id:

int resId = resources.getIdentifier(
productImageName, "drawable", context.getPackageName());

您可以从这里了解更多信息。

于 2015-10-11T11:46:51.287 回答