android - Image View src 在自定义网格视图适配器中不起作用
问题描述
我有一个自定义的 gridview 适配器 CoursesAdapter,它正在与 cardview 一起使用,但由于某些原因,从 arraylist 设置图像视图 src 时不起作用。但是当我将图像 ID 直接分配给 imageView 时,它可以工作。
任何帮助表示赞赏。
自定义 GridView 适配器
public class coursesAdapter extends BaseAdapter {
private Context context;
private ArrayList<Course> courseArrayList;
//constructor
public coursesAdapter(Context context, ArrayList<Course> courseArrayList) {
this.context = context;
this.courseArrayList = courseArrayList;
}
@Override
public int getCount() {
return courseArrayList.size();
}
@Override
public Course getItem(int position) {
return courseArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Course course=courseArrayList.get(position);
LayoutInflater layoutInflater=LayoutInflater.from(context);
convertView=layoutInflater.inflate(R.layout.course_cardview,parent,false);
final ImageView courseImage=(ImageView) convertView.findViewById(R.id.course_image_imageView);
final TextView courseTitle = convertView.findViewById(R.id.course_title_textView);
//Here if I use courseImage.setImageResource(R.drawable.sample_thumbnail);
//image is shown
courseImage.setImageResource(courseArrayList.get(position).getImage());
courseTitle.setText(courseArrayList.get(position).getName());
return convertView;`enter code here`
}
}
由于此适配器用于测试目的,我已用相同的值填充数组列表。
适配器的数组列表
for(int i=0;i<10;i++)
courseArrayList.add(new Course("Maths","Arslan",R.drawable.sample_thumbnail));
课程班
public class Course implements Parcelable{
private String name; // course Name
private String lecturer; // course lecturer
private int image; //course Image
//constructors
public Course(String name, String lecturer, int image) {
this.name = name;
this.lecturer = lecturer;
this.image = image;
}
//Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLecturer() {
return lecturer;
}
public void setLecturer(String lecturer) {
this.lecturer = lecturer;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
// Parcelable Overridden functions
protected Course(Parcel in) {
name = in.readString();
lecturer = in.readString();
image = in.readInt();
}
public static final Creator<Course> CREATOR = new Creator<Course>() {
@Override
public Course createFromParcel(Parcel in) {
return new Course(in);
}
@Override
public Course[] newArray(int size) {
return new Course[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(lecturer);
dest.writeInt(image);
}
}
解决方案
更改此行:
courseImage.setImageResource(courseArrayList.get(position).getImage());
至 :
courseImage.setImageResource(ContextCompat.getDrawable(context,courseArrayList.get(position).getImage()));
推荐阅读
- python - 部署 django 项目后显示此错误 AttributeError: 'str' object has no attribute 'tzinfo'
- javascript - 从 D3.js 的 JSON 获取数据
- azure-storage - 将 $Logs 容器数据复制到另一个 Blob 位置
- parsing - 得到`PHP解析错误:语法错误,意外':',期待';' 或'{'`
- javascript - 验证以检查用户是否输入了正确的格式
- javascript - 多个 div 网格不响应阅读更多,阅读更少
- reactjs - Invariant Violation:试图注册两个同名的视图RNCSafeAreaProvider
- wordpress - 将域指向子目录
- flutter - 具有 .obs 和 hive 字段的颤振模型
- javascript - 如何从使用 Python 的网站中提取使用 javascript 生成的表数据?