按奇偶顺序为cardView设置不同的背景颜色

Posted

技术标签:

【中文标题】按奇偶顺序为cardView设置不同的背景颜色【英文标题】:Set different background colors for cardView in order of odd and even 【发布时间】:2021-06-23 00:51:14 【问题描述】:

想为recyclerview的奇偶cardview设置不同的背景颜色。尝试使用 Adapter 类的 onBindViewHolder 方法。

class NotificationAdapter(private val notifications: List) : RecyclerView.Adapter()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotificationViewHolder 
    val inflater = LayoutInflater.from(parent.context)
    val view = inflater.inflate(R.layout.card_notification, parent, false)
    return NotificationViewHolder(view)


override fun onBindViewHolder(holder: NotificationViewHolder, position: Int) 
    holder.txtTitle.text = notifications[position]

    if(position.isEven)
        it.root.setBackgroundColor(context.colorRes(R.color.sponsor_even_color))
    else
        it.root.setBackgroundColor(context.colorRes(R.color.sponsor_odd_color))



override fun getItemCount(): Int 
    return notifications.size


class NotificationViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) 

    var txtTitle: TextView = itemView.findViewById(R.id.tv_notification_title)
    var txtDescription: TextView = itemView.findViewById(R.id.tv_notification_description)

发现错误:“未解析的引用:它”

【问题讨论】:

问题是什么? 未解决的参考:它 发现这个错误 --> 未解决的参考:它 尝试将it.root更改为holder 【参考方案1】:

使用类似的东西:

class NotificationViewHolder(...)
   var cardView: CardView = = itemView.findViewById(R.id.cardView)
   //....


override fun onBindViewHolder(holder: NotificationViewHolder, position: Int) 
    holder.txtTitle.text = notifications[position]

    if(position.isEven)
       holder.cardView.setCardBackgroundColor(....)
    else
       holder.cardView.setCardBackgroundColor(....)

并使用方法setCardBackgroundColor 而不是setBackgroundColor

【讨论】:

以上是关于按奇偶顺序为cardView设置不同的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

delphI中如何设置DBGRID奇偶行的颜色不同?

如何让表格奇偶行显示不同背景色

jQuery----奇偶选择器和索引选择器

怎么让excel奇偶行输入数字后单元格填充不同的颜色

excel按背景颜色显示数据多少

word怎么设置页面背景图片的两种方法