我尝试为CardView
中的每个RecyclerView
项设置图片。
这是我的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());
}
这是我的班级模特:
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;
}
}
你能告诉我为什么我会收到错误吗?
做正确的方法是什么?
答案 0 :(得分:1)
而不是使用holder.masarImg.setImageDrawable(masar.getMasarImg());
使用
holder.masarImg.setImageDrawable(getResources().getDrawable(masar.getMasarImg()));
或
holder.masarImg.setImageResource(masar.getMasarImg());
注意:让getResources()
使用context
答案 1 :(得分:0)
改为使用holder.masarImg.setImageResource(masar.getMasarImg());
。
答案 2 :(得分:0)
你可以使用Glide`
Glide.with(context)
.load(where image live)
.into(holder.your imageview);`
答案 3 :(得分:0)
通过Drawable或资源ID,有两种主要方法可以将图像设置为ImageView
您正在使用setImageDrawable,它需要一种Drawable,但您使用getMasarImg()传递一个int。如果您有图像资源ID(它是一个int),那么您可以使用setImageResouce()来设置图像。当然你也可以使用getResources()。getDrawable(这里是一个INT资源)但不推荐使用(如果我没记错的话),所以使用ContextCompat.getDrawable(getActivity(),你的drawable)替换。
大多数时候我会使用ContextCompat方法来获取我的drawable但是记住你需要上下文 - getActivity() - 使用它并且当你在RecyclerView适配器中时你将没有上下文所以你必须传递它在构造函数中。
答案 4 :(得分:0)
@ akhilesh0707的第二个选择是执行以下操作:
holder.masarImg.setImageResource(masar.getMasarImg());
但是我需要一个Kotlin解决方案,所以我对其进行了修改,这对我来说很有效:
holder.masarImg.setImageResource(R.drawable.myfile.png)
希望它可以帮助我,因为我浪费了数小时来尝试解决这个问题。