Android 图像视图src在自定义网格视图适配器中不工作
我有一个自定义gridview适配器CoursesAdapter,它与cardview一起使用,但由于某些原因,当从arraylist设置时,image view src不起作用。但是,当我将图像Id直接指定给imageView时,它就起作用了 感谢您的帮助 自定义GridView适配器Android 图像视图src在自定义网格视图适配器中不工作,android,android-imageview,android-cardview,baseadapter,android-gridview,Android,Android Imageview,Android Cardview,Baseadapter,Android Gridview,我有一个自定义gridview适配器CoursesAdapter,它与cardview一起使用,但由于某些原因,当从arraylist设置时,image view src不起作用。但是,当我将图像Id直接指定给imageView时,它就起作用了 感谢您的帮助 自定义GridView适配器 public class coursesAdapter extends BaseAdapter { private Context context; private A
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));
公共类课程适配器扩展BaseAdapter{
私人语境;
私人ArrayList课程列表;
//建造师
公共课程适配器(上下文、ArrayList课程列表){
this.context=上下文;
this.courserraylist=courserraylist;
}
@凌驾
public int getCount(){
return courseArrayList.size();
}
@凌驾
公共课程getItem(内部位置){
返回courseArrayList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终课程=课程raylist.get(位置);
LayoutInflater LayoutInflater=LayoutInflater.from(上下文);
convertView=LayoutFlater.充气(R.layout.course\u cardview,父项,false);
最终ImageView课程图像=(ImageView)convertView.findViewById(R.id.course\u image\u ImageView);
final TextView courseTitle=convertView.findViewById(R.id.course\u title\u TextView);
//这里,如果我使用courseImage.setImageResource(R.drawable.sample\u缩略图);
//如图所示
setImageResource(courserraylist.get(position.getImage());
setText(courserraylist.get(position.getName());
return convertView;`在这里输入代码`
}
}
由于此适配器用于测试,所以我用相同的值填充了数组列表
适配器的阵列列表
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));
对于(int i=0;i请尝试以下方法
添加此库
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.bumptech.glide:glide:3.8.0'
并将其添加到适配器中
Picasso.get().load(courseArrayList.get(position).getImage()).into(imageView1);
如果此项工作是否更改此行,请告知我:
courseImage.setImageResource(courseArrayList.get(position).getImage());
致:
添加此库
implementation 'com.squareup.picasso:picasso:2.71828'
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);
查看我的答案,它将解决您的问题。无需使用任何第三方库。您可以接受这一答案。您好@Koustuv Ganguly使用您的代码,我收到错误setImageSource(Int)在ImageView中无法应用于android.graphics.drawable.drawable请发布错误或日志。我认为您错误地将SetImageResources与setImageDrawable相混淆。我也尝试了此操作,但仍然不起作用。哎呀..!但不起作用是什么意思?它会导致图像损坏。我在arrayList和工作正常。谢谢你的帮助。嗨@pratik vekariya我更喜欢没有任何库的解决方案。仍然感谢你的回复