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

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

我有一个自定义gridview适配器CoursesAdapter,它与cardview一起使用,但由于某些原因,当从arraylist设置时,image view 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));
公共类课程适配器扩展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我更喜欢没有任何库的解决方案。仍然感谢你的回复