图像视图 src 在自定义网格视图适配器中不起作用



>我有一个自定义网格视图适配器CoursesAdapter,它与cardview一起使用,但由于某些原因,图像视图src在从arraylist设置时不起作用。但是当我将图像 ID 直接分配给图像视图时,它可以工作。

任何帮助,不胜感激。

自定义网格视图适配器

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()));

试试这种方式

添加此库

implementation 'com.squareup.picasso:picasso:2.71828'

并将其添加到您的适配器中

Picasso.get().load(courseArrayList.get(position).getImage()).into(imageView1);

让我知道这是否有效

添加此库

implementation 'com.github.bumptech.glide:glide:3.8.0'

和您的视图图像代码

Glide.with(context).load(courseArrsylist.get(position).getImage())
.override(100, 100)// here your can use the size of image
.into(courseImage);

最新更新