为何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
相关产品推荐
相关产品推荐

