web-dev-qa-db-fra.com

Picasso ne charge pas l'image

voici le code pour picasso:

ImageView img = (ImageView)findViewById(R.id.product_image);
    Picasso.with(this)
    .load(_url)
    .fit()
    .into(img, new Callback() {

        @Override
        public void onSuccess() {


        }

        @Override
        public void onError() {


        }
    });

voici la valeur de _url: http://kiagallery.ir/Images/Upload/Collection%20101/Spring%20101/d4a03b66dc7b46c694615c549b78b2e9.jpg

et voici le xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

<ImageView 
    Android:id="@+id/product_image"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

<TextView 
    Android:id="@+id/product_name"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:textSize="13sp"
    Android:layout_below="@id/product_image"/>

<TextView
    Android:id="@+id/product_price"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:textSize="13sp"
    Android:layout_below="@id/product_name"/>
</RelativeLayout>

comme vous pouvez le voir, il est possible d'accéder à l'image par le biais du navigateur, mais Picasso ne parvient pas à la charger. J'ai vérifié la fonction onError et elle ne s'est jamais appelée. Je suis vraiment perdu, toute aide serait la bienvenue.

MODIFIER: Lorsque j'attribue à 200dp une valeur fixe de width & height pour imageview, l'image est chargée, mais lorsque je la modifie en wrap_content, elle n'affiche pas l'image.

13
arash moeen

J'imagine que vous devriez pas appeler cette méthode fit() dans Picasso pendant que votre ImageView a sa largeur et sa hauteur définies par WRAP_CONTENT.

Cette méthode attend que la ImageView ait été mesurée et redimensionne l'image pour qu'elle corresponde exactement à sa taille. Alors que votre ImageView a une taille définie par WRAP_CONTENT, les méthodes getMeasuredWidth() et getMeasuredHeight() retournent apparemment 0, ce qui rend votre ImageView invisible .

29
Luboš Staráček

Ne pas oublier d'ajouter la permission de manifester 

<manifest ...>
    <uses-permission Android:name="Android.permission.INTERNET" /> 
60
Defuera

Si vous utilisez networkPolicy (NetworkPolicy.OFFLINE), il est possible que vous n'ayez pas d'images en utilisant Picasso.

2
Anand Savjani

Je faisais face à un problème similaire dans lequel j'avais une ViewPager d'images placées dans un plein écran DialogFragment. Le même ViewPager fonctionnait parfaitement lorsqu'il était placé ailleurs et Picasso chargeait les images comme prévu. Mais uniquement lorsqu'elles sont placées dans la version complète DialogFragment, certaines images apparaissent vierges. Il semblait que les images avaient été extraites avec succès du serveur et chargées dans la ImageView, mais la ImageView semblait toujours vide.

Aucune des réponses ci-dessus ou des discussions similaires n'a fonctionné pour moi.

Je suis donc passé à une autre grande bibliothèque appelée Glide . Il ressemble beaucoup à Picasso… .. En savoir plus ici et ici . Même si ce n'est peut-être pas la réponse la plus pertinente, ça vaut peut-être la peine de donner une chance à quelqu'un a été coincé avec un problème similaire.

0
kds23