1
votes

Picasso ne charge pas l'image dessinable dans ImageView

Picasso ne peut pas charger l'image dessinable dans ImageView , j'ai essayé de modifier les ImageView largeur et hauteur, redimensionnement de l'image, chargement avec et sans fit () , resize () ou center () et l'image n'est toujours pas visible . J'utilise Picasso sur l'ensemble du projet, et partout fonctionne bien, mais cela ne donne aucun résultat à celui-ci.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        mView = inflater.inflate(R.layout.list_full, container, false);

        refreshIV = mView.findViewById(R.id.ivSynchroIcon);

        mobileArray = new ArrayList<IssuePOJO>(); 
        dbStats.open();

        generateList();

        mView = view;
        return mView;

    }

Appel de méthode:

Picasso.get().load(R.drawable.refresh_icon)
                .resize(10, 10)
                .into(refreshIV);

Je l'appelle dans onViewCreated () et j'ai essayé de le redimensionner avec des valeurs différentes également.

Je veux obtenir une barre inférieure cliquable avec l'icône de rafraîchissement (et des informations sur l'heure de la dernière synchronisation), pour synchroniser les données avec le service dans la méthode onClick

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainFullFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/mainThemeBlack"
    tools:context=".MainTabsActivity">



    <RelativeLayout
        android:id="@+id/rlSynchroView"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:background="@color/bottom_sheet_blue">
        <TextView
            android:id="@+id/tvSynchroLast"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="end"
            android:layout_marginEnd="10dp"
            android:textColor="@color/mdtp_white"
            android:text="Last synchro: 10:38"/>



        <ImageView
            android:id="@+id/ivSynchroIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tvSynchroLast"
            android:elevation="5dp"/>
    </RelativeLayout>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/listFullView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:dividerHeight="10.0sp"
        android:layout_above="@id/rlSynchroView"
        android:background="?android:attr/selectableItemBackground"
        android:divider="@color/mainThemeBlack"
        android:paddingBottom="70dp"
        android:clipToPadding="false">

    </android.support.v7.widget.RecyclerView>
</RelativeLayout>


2 commentaires

où est refreshIV ?


J'ai édité ma question, mView est global pour ce fragment, donc je peux l'utiliser partout pour findViewById ()


5 Réponses :


-2
votes

Picasso a ce problème, vous devriez essayer d'utiliser un espace réservé avec votre dessinable

Picasso.get().load(R.drawable.refresh_icon)
            .resize(10, 10)
            .placeholder(R.drawable.refresh_icon)
            .into(refreshIV);


1 commentaires

pourquoi utilisez-vous un espace réservé?



2
votes

vous le chargez dans une mauvaise image. Changez votre code comme ceci

 Picasso.get()
            .load(R.drawable.refresh_icon)
            .into(ivSynchroIcon, new Callback() {
                @Override
                public void onSuccess() {
                }

                @Override
                public void onError(Exception e) {
                }
            })

Si vous voulez voir ce qui ne va pas, ajoutez simplement le rappel PIcasso comme ceci

Picasso.get().load(R.drawable.refresh_icon).into(ivSynchroIcon);


7 commentaires

J'ai édité, refreshIV = mView.findViewById (R.id.ivSynchroIcon);


@SkypeDogg. voir la réponse mise à jour. imprimez maintenant votre exception et votre succès à la fois. voir ce qui se passe


Je l'ai configuré pour imprimer "succès" en cas de succès, et e.getMessage () en cas d'erreur, et voici ce que j'ai: 02-21 13: 12: 27.677 32724- 32724 / com.example.damianadamski.Service D / PICASSO: success . On dirait que cela fonctionne bien, mais toujours aucune image chargée


L'arrière-plan de la mise en page est bleu, l'icône est blanche avec un fond transparent. Aucune idée de ce qui ne va pas.


@SkypeDogg essayez avec une image différente pour le test


J'ai essayé 3 autres drawables que j'utilise en projet, mais sans résultat


je ne pense pas qu'il y aura de problèmes maintenant. Tout est parfait. mais faites simplement que vous utilisez une image jpg ou png. essayez avec une image différente, nettoyez et construisez votre projet. et assurez-vous que votre imageview est visible dans la conception également



0
votes

essayez cette ligne

Picasso.with(context).load(url).resize(10, 10).into(refreshIV);


0 commentaires

1
votes

Puisque vous avez déjà le dessinable (refresh_icon) dans vos ressources, vous pouvez le mettre directement dans la mise en page.

<ImageView
    android:id="@+id/ivSynchroIcon"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:padding="10dp"
    android:layout_below="@+id/tvSynchroLast"
    android:src="@drawable/refresh_icon"
    android:elevation="5dp"/>

Si vous voulez quand même utiliser Picasso, essayez de vérifier l'élément ivSynchroIcon dans Inspecteur de mise en page. Ainsi, vous pouvez voir où la vue d'image est placée, ainsi que les mesures. Dans Android Studio Tools -> Layout Inspector


2 commentaires

icône d'actualisation est de 128 x 128, donc je ne suis pas sûr qu'elle sera redimensionnée à partir de XML


La hauteur de votre disposition rlSynchroView est de 70dp. Donc, donnez simplement width = 70dp, height = 70dp. Et si vous le souhaitez, vous pouvez réduire la taille de l'icône en ajoutant un remplissage. J'ai édité ma réponse.



1
votes

La syntaxe Picasso semble correcte, mais la logique de la méthode onCreateView est incorrecte

Veuillez essayer avec le code ci-dessous:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.list_full, container, false);

    refreshIV = mView.findViewById(R.id.ivSynchroIcon);

    mobileArray = new ArrayList<IssuePOJO>(); 
    dbStats.open();

    generateList();

    //mView = view;//please comment this one and try
    return mView;

}


2 commentaires

@SkypeDogg s'il vous plaît vérifier ma réponse


Vous êtes les bienvenus et merci d'avoir accepté la réponse, heureux de vous aider :)