Почему не устанавливается цвет CardVIew в RecyclerView?
У CardView никак не устанавливается цвет программно. CardView является элементом RecyclerView.
onBindViewHolder:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) {
is TimerViewHolder -> {
holder.bind(items[position])
}
}
}
class in Adapter:
class TimerViewHolder
constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val cardView: CardView = itemView.card_view
private val colors: ArrayList<Int> = arrayListOf(
R.color.timer_blue,
R.color.timer_green,
R.color.timer_orange,
R.color.timer_purple,
R.color.timer_red
)
fun bind(timer: Timer) {
cardView.setCardBackgroundColor(colors[(0 until colors.size).random()]) // не работает
}
}
Ответы (1 шт):
Автор решения: Pentiux
→ Ссылка
Из комментариев:
R.color.timer_blue - colorId а не сам Color? context.resources.getColor(R.color.color_id, context.activity.theme) - по памяти точно не помню обращения, не в IDE – Pentiux
Да, itemView.context.getColor(R.color.timer_blue) помогло. – Dewerro
На всякий: этот метот, насколько я помню, deprecated. Так что стоит использовать метод с темой, просто дописать получение темы, как в моем сообщении.