Подтвердить что ты не робот

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>

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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