You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何RecyclerView列表项背景颜色设置不生效?

RecyclerView列表项背景色设置问题及解决方法

问题说明

在Kotlin中根据布尔值设置RecyclerView列表项背景色时,遇到以下问题:

  • RecyclerView加载时,原有代码无法成功设置目标背景色
  • 通过代码修改XML绑定的列表项背景时,无法切换为新的Drawable,反而会重置为初始样式

原错误代码

@RequiresApi(Build.VERSION_CODES.O)
override fun onBindViewHolder(holder: AlarmViewHolder, position: Int) {
    val alarm = alarmList[position]
    holder.itemView.apply {
        if (alarm.amPm) {
            setBackgroundColor(context.getColor(R.color.todays_day_color))
        }
    }
}

解决方法及修正后代码

问题出在直接操作itemView设置背景,正确的做法是通过列表项布局的根View(list_item_layout_id)来设置背景色,同时必须处理else分支的默认颜色,避免RecyclerView复用导致的样式异常:

if (alarm.amPm) {   
    list_item_layout_id.setBackgroundColor(context.getColor(R.color.todays_day_color))
} else {
    list_item_layout_id.setBackgroundColor(context.getColor(R.color.black))
}

内容的提问来源于stack exchange,提问作者auotive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:20:28