我在自定义适配器类中使用ImageView
。问题是我的适配器内部有 2 个图像视图,我使用"占位符图像"作为它们的默认图像,但是当我尝试填充我的RecyclerView
并使用适配器的ViewHolder
setImageResource()
时,它只是位于默认的"占位符图像"后面而不是覆盖它。我对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" />