ImageView 不会替换以前在 RecyclerView 适配器中使用的 Drawable



我在自定义适配器类中使用ImageView。问题是我的适配器内部有 2 个图像视图,我使用"占位符图像"作为它们的默认图像,但是当我尝试填充我的RecyclerView并使用适配器的ViewHoldersetImageResource()时,它只是位于默认的"占位符图像"后面而不是覆盖它。我对Java和Android应用程序开发都很陌生,所以我不知道setImageResource()是否与适配器不同。

这是我的代码:

public void onBindViewHolder(@NonNull ProductAdapter.ViewHolder holder, int position) {
holder.itemView.setTag(product.get(position));
holder.tvTitle.setText(product.get(position).getTitle());
holder.tvDescription.setText(product.get(position).getDescription());
//PROBLEM STARTS HERE
//Set Status (getSale() returns bool)
switch (product.get(position).getSale()?"sold":"available"){
case "sold":
holder.ivStatus.setImageResource(R.drawable.sold);
break;
case "available":
holder.ivStatus.setImageResource(R.drawable.available);
break;
}
//Set Product Image
switch (product.get(position).getType()){
case "Laptop":
holder.ivProduct.setImageResource(R.drawable.laptop);
break;
case "LCD":
holder.ivProduct.setImageResource(R.drawable.screen);
break;
case "USB":
holder.ivProduct.setImageResource(R.drawable.memory);
break;
case "Hard Disk":
holder.ivProduct.setImageResource(R.drawable.hdd);
break;
}

}

在这两种情况下,开关盒都能正常工作并选择正确的图像资源,但它只是将图像资源放在占位符图像后面。 如何覆盖默认图像?

您同时看到这两个图像的原因是因为您在ImageView上同时设置了背景和前景图像

要解决此问题,请从两个ImageViews中删除android:foreground,并将占位符保留在app:srcCompat

因此,您的ImageView应如下所示:

<ImageView
android:id="@+id/ivStatus"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
app:srcCompat="@drawable/placeholder" />

相关内容

  • 没有找到相关文章

最新更新