Search code examples
androidandroid-recyclerviewadapterandroid-cardview

Setting image resource to RecyclerView list items


I'm trying to set an image for each CardView item in my RecyclerView.

Here's my onBindViewHolder :

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Masar masar=masrList.get(position);
    holder.masarName.setText(masar.getMasarTitle());
    holder.masarDesc.setText(masar.getMasarDescreption());

    // why i'm getting error here
    holder.masarImg.setImageDrawable(masar.getMasarImg());
}

And here's my class model:

public class Masar {
    public String masarTitle;
    public String masarDescreption;
    public int masarImg;

    public Masar(String masarTitle, String masarDescreption) {
        this.masarTitle = masarTitle;
        this.masarDescreption = masarDescreption;
    }

    public Masar(String masarTitle, String masarDescreption, int masarImg) {
        this.masarTitle = masarTitle;
        this.masarDescreption = masarDescreption;
        this.masarImg = masarImg;
    }

    public String getMasarTitle() {
        return masarTitle;
    }

    public String getMasarDescreption() {
        return masarDescreption;
    }

    public int getMasarImg() {
        return masarImg;
    }

    public void setMasarImg(int masarImg) {
        this.masarImg = masarImg;
    }
}

Could you please tell me why I'm getting error?

And what's the right method to do it?


Solution

  • instead of using holder.masarImg.setImageDrawable(masar.getMasarImg());

    Use

    holder.masarImg.setImageDrawable(getResources().getDrawable(masar.getMasarImg()));
    

    or

    holder.masarImg.setImageResource(masar.getMasarImg());
    

    Note: to get getResources() use context