Пикассо не загружает изображение

вот код для пикассо:

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>

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

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


person arash moeen    schedule 04.08.2014    source источник


Ответы (4)


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

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

person Luboš Staráček    schedule 04.08.2014
comment
да, как указано в github.com/square/picasso/issues/457 . .. поэтому я удалю вызов fit() и исправлю ширину моего изображения до 90% устройства, это должно исправить - person arash moeen; 04.08.2014
comment
У меня точно такой же код, но он все равно не загружается. Я также изменил ширину и высоту на 200dp и добавил разрешение на файл манифеста, какие могут быть возможные проблемы? - person Recomer; 17.06.2016

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

<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" /> 
person Defuera    schedule 03.12.2015
comment
Мой Бог! Я пропустил, чтобы добавить это также! - person ssudaraka; 22.02.2017

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

person Anand Savjani    schedule 14.08.2015

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

Ни один из приведенных выше ответов или подобных тем не работал у меня.

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

person kds23    schedule 21.10.2016