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() {


        }
    });

вот значение _url: http://kiagallery.ir/Images/Upload/Collection%20101/Spring%20101/d4a03b66dc7b46c694615c549b78b2e9.jpg

и вот 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>

Как вы можете видеть, изображение можно получить через браузер, но Пикассо не удается загрузить его, я проверил функцию onError, и она никогда не вызывается, я тихо потерялся здесь, любая помощь будет оцененный.

EDIT: когда я даю фиксированное значение ширины и высоты imageview, например 200dp, он загружает изображение, но когда я изменяю его на wrap_content, он не показывает изображение.

4 ответов


Я думаю, вы должны не называем это fit() метод Пикассо, пока ваш ImageView имеет ширину и высоту, определенные WRAP_CONTENT.

этот метод подождите, пока ImageView была измерена и изменить размер изображения, чтобы точно соответствовать его размерам. Пока ваш ImageView имеет размер, заданный WRAP_CONTENT, затем методы getMeasuredWidth() и getMeasuredHeight() по-видимому, возвращает 0, что делает ваш ImageView невидимка.


Не забудьте добавить разрешение в манифест

<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" /> 

Если вы используете networkPolicy(NetworkPolicy.OFFLINE) тогда возможно, что вы не получите изображения с помощью Picasso.


я столкнулся с аналогичной проблемой, где у меня был ViewPager изображений, размещенных внутри полноэкранный DialogFragment. Тот же ViewPager работал отлично, когда помещался в другом месте, и Пикассо загрузил изображения, как ожидалось. Но только при размещении в полноэкранном режиме DialogFragment некоторые изображения кажутся пустыми. Казалось, что изображения были успешно извлечены с сервера и загружены в ImageView, а ImageView все еще казался пустым.

ни один из приведенных выше ответов или аналогичных потоков не работал для мне.

поэтому я переключился на другую большую библиотеку под названием скольжения. Он очень похож на Пикассо. Узнайте больше здесь и здесь. Даже если это может быть не самым уместным ответом, возможно, стоит дать шанс для кого-то, кто застрял с подобной проблемой.