Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将图像添加到AdapterClass中的RecyclerView?_Android_Android Studio_Android Recyclerview - Fatal编程技术网

Android 如何将图像添加到AdapterClass中的RecyclerView?

Android 如何将图像添加到AdapterClass中的RecyclerView?,android,android-studio,android-recyclerview,Android,Android Studio,Android Recyclerview,下面是产品bean类 所以我的循环视图可以工作,但这行代码没有工作。这是我的适配器类中的代码 holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage())); 阶级 如果产品对象中的图像包含可绘图软件包中的图像资源,则需要使用 holder.imageView.setImageResource(product.getImage()); 试试这个: 如果您获取数据表单api,请按如下方

下面是产品bean类

所以我的循环视图可以工作,但这行代码没有工作。这是我的适配器类中的代码

holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage()));
阶级


如果产品对象中的图像包含可绘图软件包中的图像资源,则需要使用

holder.imageView.setImageResource(product.getImage());
试试这个:

如果您获取数据表单api,请按如下方式设置图像

 RequestOptions options = new RequestOptions()
            .centerCrop()
            .placeholder(R.drawable.avatar1)
            .error(R.drawable.avatar1)
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .priority(Priority.HIGH)
            .dontAnimate()
            .dontTransform();

 Glide.with(context)
            .load(UpcomingHistoryList.get(position).getPhotoUrl())
            .apply(options)
            .into(holder.img);
  ImageView imageView = (ImageView) findViewById(R.id.image);
  imageView.setImageResource(R.drawable.hello);
您可以使用glide和毕加索

如果获得图像表单可绘制,请按如下方式设置图像

 RequestOptions options = new RequestOptions()
            .centerCrop()
            .placeholder(R.drawable.avatar1)
            .error(R.drawable.avatar1)
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .priority(Priority.HIGH)
            .dontAnimate()
            .dontTransform();

 Glide.with(context)
            .load(UpcomingHistoryList.get(position).getPhotoUrl())
            .apply(options)
            .into(holder.img);
  ImageView imageView = (ImageView) findViewById(R.id.image);
  imageView.setImageResource(R.drawable.hello);

我认为如果您得到产品对象的字符串,您应该尝试将该字符串转换为Uri或位图,这样当您在imageview中进行设置时,就可以显示,如果您显示产品类以了解返回产品的值的类型,这将非常有帮助;
Uri.parse(product.getImage())

我使用一种方法加载可绘制文件,它们是矢量isset

 public static BitmapDescriptor getBitmapFromVector(@NonNull Context context,
                                                   @DrawableRes int vectorResourceId,
                                                   @ColorInt int tintColor) {

    Drawable vectorDrawable = ResourcesCompat.getDrawable(
            context.getResources(), vectorResourceId, null);
    if (vectorDrawable == null) {
        String TAG = "tag";
        Log.e(TAG, "Requested vector resource was not found");
        return BitmapDescriptorFactory.defaultMarker();
    }
    Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
            vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    DrawableCompat.setTint(vectorDrawable, tintColor);
    vectorDrawable.draw(canvas);
    return BitmapDescriptorFactory.fromBitmap(bitmap);
}

之后,它只保留imageview.setImageBitmap(Bitmapdescriptor(parameters);

通过读取注释,看起来产品对象将图像存储为字符串。getImage()方法必须返回int

在产品中声明图像(带有一些默认图像),如下所示:

private int image = R.drawable.default_image;
吸气剂的外观如下所示

public int getImage() {
  return image;
}
//产品的对象类
类产品{
公共产品(字符串标题、字符串简短描述、双重评级、双重价格、整数图像){
this.title=标题;
this.short\u description=short\u description;
这个。评级=评级;
这个价格=价格;
这个图像=图像;
}
字符串标题;
字符串简短描述;
双重评级;
双倍价格;
int图像;
}
//阵列产品列表
List productList=new ArrayList();
产品列表。添加(新产品(“标题1”,“简短描述1”,4,50,R.drawable.ic_thumb_down”);
产品列表。添加(新产品(“标题2”,“简短描述2”,3100,R.drawable.ic_thumb_down”);
产品列表。添加(新产品(“标题3”,“简短描述3”,4150,R.drawable.ic_thumb_down”);
//适配器
公共类ImageAdapter扩展了RecyclerView.Adapter{
列表资源列表;
公共图像适配器(列表资源列表){
this.resourceList=resourceList;
}
@非空
@凌驾
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
返回新的ImageViewHolder(layoutFlater.from(viewGroup.getContext())。充气(R.layout.row_图像,viewGroup,false));
}
@凌驾
public void onBindViewHolder(@NonNull ImageViewHolder ImageViewHolder,int i){
产品=产品列表。获取(i);
imageViewHolder.imageView.setImageResource(product.image);
//在这里,您还可以使用其他字段,如标题、说明等。。。
}
@凌驾
public int getItemCount(){
返回resourceList.size();
}
类ImageViewHolder扩展了RecyclerView.ViewHolder{
图像视图图像视图;
公共ImageViewHolder(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageView3);
}
}
}
尝试使用:

holder.imageView.setImageDrawable(ContextCompact.getDrawable(ctxt, R.drawable.YOUR_RESOURCE_IMAGE));
如果product.getimage()返回的资源id为R.drwable.your_resource_IMAGE 尝试使用:

  holder.imageView.setImageDrawable(ContextCompact.getDrawable(ctxt, product.getimage()));

什么是
product.getImage()
?公共产品(int-id、字符串标题、字符串简短描述、双重评级、双重价格、int-image){this.id=id;this.title=title;this.short\u description=short\u description;this.rating=rating;this.price=price;this.image=image;public int getImage(){return image;}很抱歉使用它的外观,我可以在这里发送图像吗?我可以在twitter上发送图像吗?好的,你如何设置
产品
?具体来说,你如何在
产品
中设置图像?所有文件都是txt格式的。你可以看看这些类和布局吗?问题是当我删除holder.imageView.setImageDrawable时(mCtx.getResources().getDrawable(product.getImage()));列表显示,但当我将其添加到适配器类时,整个应用程序不会运行,但您想显示手机的已加载图像还是可绘制文件夹?好的,但您想显示手机的已加载图像或可绘制文件夹?您能发送错误的屏幕截图吗?我想这将是一个来自drawable folderok,使用gradle.app中的git库…….实现'com.github.bumptech.glide:glide:3.7.0'luego glide.with(context).将(//produc.getimage.fitCenter().centerCrop()加载到(holder.imageview);我可以将数组中的Int替换为Product吗?我的类是。您可以将任何对象用于数组。@D-TECK更新答案。根据需要使用产品数组。