2016-11-16 1 views
0

J'ai un adaptateur personnalisé qui contient des données de json incluant une URL d'image. La question est j'obtiens « cant résolution symbole » sur la valeur de contexte à l'intérieur du onBindViewHolder() ...Impossible de résoudre le contexte pour picasso dans android

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 

    ClubFieldsModel value = Items.get(i); 
    //Uri uri = Uri.parse(value.getFieldImageThumb().toString()); 
    viewHolder.title.setText(value.getTitle()); 
    viewHolder.desc.setText(value.getDesc()); 
    String imageUrl = value.getFieldImageThumb(); 

    //context "cant resolve symbol" error ... 
    Picasso.with(context).load(imageUrl).into(viewHolder.field_image_thumb); 

} 

ne peux pas voir pourquoi le problème existerait, tout est initialisé ..

EDIT: code adaptateur complet ..

package app.sync.myapp.adapters; 

import android.net.Uri; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.squareup.picasso.Picasso; 

import java.net.URI; 
import java.util.List; 


import app.sync.myapp.R; 
import app.sync.myapp.model.ClubFieldsModel; 

import static android.support.v7.appcompat.R.id.action_context_bar; 
import static android.support.v7.appcompat.R.id.image; 
import static app.sync.myapp.R.id.field_image_thumb; 

public class ClubFieldsAdapter extends RecyclerView.Adapter<ClubFieldsAdapter.ViewHolder> { 

List<ClubFieldsModel> Items; 

public ClubFieldsAdapter(List<ClubFieldsModel> Items) { 
    this.Items = Items; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.club_fields_item, viewGroup, false); 
    ViewHolder viewHolder = new ViewHolder(v); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 

    ClubFieldsModel value = Items.get(i); 
    //Uri uri = Uri.parse(value.getFieldImageThumb().toString()); 
    viewHolder.title.setText(value.getTitle()); 
    viewHolder.desc.setText(value.getDesc()); 
    String imageUrl = value.getFieldImageThumb(); 

    Picasso.with(context).load(imageUrl).into(viewHolder.field_image_thumb); 

} 

@Override 
public int getItemCount() { 
    return Items.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder { 

    public ImageView field_image_thumb; 
    public TextView title; 
    public TextView desc; 

    public ViewHolder(View itemView) { 

     super(itemView); 
     title = (TextView) itemView.findViewById(R.id.title); 
     desc = (TextView) itemView.findViewById(R.id.desc); 
     field_image_thumb = (ImageView) itemView.findViewById(R.id.field_image_thumb); 


     } 


    } 
} 
+0

Postez votre code d'adaptateur complet –

Répondre

2

vous pouvez utiliser viewHolder.itemView.getContext(), où itemView est la vue que vous gonflé onCreateViewHolder. Jetez un oeil here. Par exemple.

Picasso.with(viewHolder.itemView.getContext()).load(imageUrl).into(viewHolder.field_image_thumb); 
+0

Merci, ça a marché! – BENN1TH

+0

vous êtes les bienvenus – Blackbelt

0

Vous devez envoyer le contexte au constructeur de l'adaptateur. Modifiez-le en:

private Context context; 

public ClubFieldsAdapter(List<ClubFieldsModel> Items, Context context) { 
this.Items = Items; 
this.context = context; 
} 

Et ajoutez le contexte lorsque vous appelez la classe d'adaptateur.