android - 在 RecyclerView 上更改 CardBackgroundColor

标签 android background-color cardview

我的 RecyclerView 上有以下代码:

class TaskViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener
    {
        var mId: TextView = v.task_id
        var mDescription: TextView = v.task_description
        var mCard: CardView = v.task_card
        var mView: View = v
    }

override fun onBindViewHolder(holder: TaskViewHolder, position: Int)
{
    // Initialize ViewHolder content
    holder.mId.text = items[position].getID().toString()
    holder.mDescription.text = items[position].getDescription()
    holder.mTask = items[position]

    for (elem in priorities)
    {
        if (elem.getID() == items[position].getPriority())
        {
            holder.mCard.setCardBackgroundColor(Color.parseColor("#c2c2c2"))
            break
        }
    }
}

我不知道为什么,但 CardView backgroundColor 没有改变。

如果我使用下面的代码,它可以正常工作:

holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mView.context, R.color.priority3))

我应该如何以编程方式设置 CardBackgroundColor?

最佳答案

首先,您需要将其他部分设置为透明或其他颜色以避免颜色重复渲染问题。其次,您必须将上下文从您的 Activity 或 fragment 传递到适配器,并且该上下文将用于获取如下所示的颜色。

if (elem.getID() == items[position].getPriority())
    {
        holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext, [first color]))  
    } else {
        holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext,[second color]))
    }

关于android - 在 RecyclerView 上更改 CardBackgroundColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55903075/

相关文章:

android - 网格中的 CardView 不在所有侧面显示阴影

android - webview加载数据后activity出现一些白 block

java - 在 XML 中的 ListView 上方添加 header

android - 使用 Map 从 Firebase 数据库中检索数据

javascript - 通过 JavaScript 检测和区分 Android 平板电脑和 Android 手机?

css - Squarespace 日历颜色更改的自定义 CSS

android - 捏缩放 TextView

javascript - 删除值时将输入背景颜色更改为白色

java - 使用 TableCellRender 设置 JTable 列和行的颜色

android - 主体较小的 CardView 和漂浮在其外部的图像