2016-12-23 6 views
0

Я не могу загрузить изображение в ImageView с помощью Picasso. Я так много искал, но не нашел ответа.GridView, Picasso Не загружается в ImageView

Существует GridView, а у GridView есть ImageView и TextView. Я использовал Picasso для загрузки изображения в ImageView.

Вот адаптер:

public class MyGridAdapter extends BaseAdapter { 
Context context; 
LayoutInflater inflater; 
public List<Photo> data ; 
Photo photo = new Photo(); 

public MyGridAdapter(Context context, 
        List<Photo> arraylist) { 
    this.context = context; 
    data = arraylist; 
    //imageLoader = new ImageLoader(context); 
} 

@Override 
public int getCount() { 
    return data.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 
    // Declare Variables 
    TextView phototitle; 
    ImageView imageView; 

    inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View itemView = inflater.inflate(R.layout.gridview_item, parent, false); 
    // Get the position 
    photo = data.get(position); 

    phototitle = (TextView) itemView.findViewById(R.id.phototitle); 
    imageView = (ImageView) itemView.findViewById(R.id.imageView1); 


    phototitle.setText(photo.getTitle()); 

    String url = photo.getUrl(); 
    Log.d("url", url); 
    Picasso.with(context).setLoggingEnabled(true); 
    Picasso.with(context).load(url).into(imageView); 

    return itemView; 
} 
} 

Вот GridView пункт:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="200dp" 
    android:layout_height="200dp" /> 

<TextView 
    android:id="@+id/phototitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="10sp"/> 

</LinearLayout> 

выход:

12-23 22:03:03.921 18840-18840/com.mehmetsefa.challenge D/url: http://placehold.it/150/bb7f4 
12-23 22:03:03.926 18840-18840/com.mehmetsefa.challenge W/Settings: Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value. 
12-23 22:03:03.931 18840-18840/com.mehmetsefa.challenge D/Picasso: Main  created  [R0] Request{http://placehold.it/150/bb7f4} 
12-23 22:03:03.936 18840-19224/com.mehmetsefa.challenge D/Picasso: Dispatcher enqueued  [R0]+2ms 
12-23 22:03:03.936 18840-19226/com.mehmetsefa.challenge D/Picasso: Hunter  executing [R0]+2ms 
12-23 22:03:03.946 18840-18840/com.mehmetsefa.challenge D/url: http://placehold.it/150/bb7f4 

Что я не так?

+0

выводится на этот Log.d («url», url); –

+0

Я добавил вывод. –

+0

попробуйте добавить Picasso.with (Context) .setLoggingEnabled (true); который даст журналы о любых проблемах, связанных с пикассо ... – rafsanahmad007

ответ

0

Вы не ошибетесь, ваши изображения ошибочны. Я думаю, это потому, что он не имеет расширения или формируется не сразу после того, как был снят запрос. Ваше изображение формируется с помощью какой-либо библиотеки CG, и оно генерирует изображение сразу после завершения запроса, поэтому тело возвращается пустым.

+0

Что вы предлагаете? –

+0

Переключитесь на обычные изображения, не генерируемые «на лету». Или попробуйте другую библиотеку, может быть, Glide справится лучше. –

+0

Я использовал Glide. Это сработало. –

0

В основном у вас нет разрешения ИНТЕРНЕТ. Когда вы пытаетесь отлаживать Пикассо вот что я предлагаю:

Создать Builder, как это:

Picasso.Builder builder = new Picasso.Builder(context); 
     builder.listener(new Picasso.Listener() 
     { 
      @Override 
      public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) 
      { 
       exception.printStackTrace(); 
      } 
     }); 
     picasso = builder.build(); 

использовать вышеуказанный экземпляр для загрузки изображения:

picasso.load(url).into(imageView); 

Вы увидите в если есть какие-либо ошибки. Удачи.

+0

Это не было разрешение на интернет. Я использовал Glide вместо Picasso/ –

+0

Привет @ MehmetSefaBalık вы пытались использовать Picasso Builder, как было предложено. Какое исключение вы видите? – write2sv

+0

Привет, @ MehmetSefaBalık Я знаю, что вы перешли к Glide, что мне больше нравится Пикассо;). Но вот рабочая реализация. https://github.com/write2sv/GridViewPicasso – write2sv

Смежные вопросы