Search code examples
javaandroidretrofitpicasso

feching image by picasso library in recycler view


i'm create recycler view which fetching data from web server by retrofit , my problem when i want fetching image by picasso i have error message

                                             java.lang.IllegalArgumentException: Context must not be null.

i don't know why context is null i'm add the picasso in onBindViewHolder

my adapter

public class myAdapter extends RecyclerView.Adapter<myAdapter.ViewHolder> {
     private List<Listitem>listitems;
    private Context context;

    public myAdapter(List<Listitem> listitems, Context context) {
        this.listitems = listitems;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
     Listitem listitem = listitems.get(position);

        holder.textTitile.setText(listitem.getTitel());
        holder.textDesc.setText(listitem.getDesc());
        Picasso.with(context)
                .load(listitem.getImageurl())
                .placeholder(R.color.colorAccent)
                .into(holder.movieThumbnail);


    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{

        public TextView textTitile ;
        public TextView textDesc;
public ImageView movieThumbnail;


        public ViewHolder(View itemView) {
            super(itemView);
            textTitile=(TextView) itemView.findViewById(R.id.Titell);
            textDesc=(TextView)itemView.findViewById(R.id.desc);
            movieThumbnail = (ImageView) itemView.findViewById(R.id.movie_thumbnail);

        }
    }
}

Solution

  • You Context is null, Any way you can use view context also ex : holder.itemView.getContext()

    You can check You are sending not null or you can use blow approach.

    So you can change as

    Picasso.with(holder.itemView.getContext())
                    .load(listitem.getImageurl())
                    .placeholder(R.color.colorAccent)
                    .into(holder.movieThumbnail);