2015-10-10 4 views
0

Dans mon adaptateur GridView, j'essaie de charger efficacement les images, donc j'ai utilisé Picasso 2.5.2 (qui permet le chargement par ID de ressource).Recherche de raisons pour lesquelles Bitmap.decodeResource utilisant resourceId renverrait null

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

Cependant, il donne toujours une image vide lorsque je passe un ID de ressource avec ce message.

SkImageDecoder::Factory returned null 

Avant que j'ai vérifié la page Picasso Github Je pensais que je voudrais essayer avec l'aide de l'appel-cadre:

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

App.get() est le retour de mon application singleton si le contexte est légitime. J'ai également essayé de passer dans le contexte du parent dans les paramètres getView et de passer dans un contexte d'activité. Annoncer le résid me montre l'ID correct pour le étirables et il ne fonctionne toujours pas, mais cela fonctionne:

imageView.setImageResource(resId); 

... mais il est pas bon parce que je ça ne me donne pas la chance de réserver de la mémoire en chargeant l'image dans une taille plus petite.

J'ai essayé sur Genymotion et sur un vrai appareil avec les mêmes résultats.

Donc, à la fois le contexte et l'ID de ressource sont bien dans Logcat, quoi d'autre pourrait être le problème ici?

Répondre

0

Resource id est la valeur entière du drawable.Try code suivant pour obtenir ressource id:

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

Vous pouvez en savoir plus de here.