Recycler View Item Row 颜色交替变化

Recycler View Item Row color change alternatively

我有一个问题,我想交替使用回收站项目行的颜色。即,如果第一行是白色,第二行是灰色,第三行又是白色,第四行又是灰色,依此类推。我试过一个代码,但没有用。请帮忙。

这是我的代码,

class ItemAdapter() : RecyclerView.Adapter<ItemAdapter.DateViewHolder>() {

    private var ItemList: MutableList<Items>? = ArrayList()
    private lateinit var ItemViewModel: ItemRowListBinding
    private lateinit var listener: OnItemClickListener

    init {
        this.ItemList = arrayListOf()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DateViewHolder {
        ItemViewModel = DataBindingUtil.inflate(
            LayoutInflater.from(parent.context), R.layout.item_row_list,
            parent, false
        )
        return DateViewHolder(ItemViewModel)
    }

    override fun onBindViewHolder(holder: DateViewHolder, position: Int) {

        if(position % 2 == 0) {                           
           holder.itemView.setBackgroundResource(R.color.White);
        } else {
           holder.itemView.setBackgroundResource(R.color.Grey);
        }

        holder.bindItemDetail(ItemList!![position])
    }

    override fun getItemCount(): Int {
        return ItemList!!.size
    }

    fun setItemList(scanList: MutableList<Items>) {
        this.ItemList = scanList
        notifyDataSetChanged()
    }


    inner class DateViewHolder(private var itemRowBinding: ItemRowListBinding) :
        RecyclerView.ViewHolder(itemRowBinding.root) {

        fun bindItemDetail(ItemResponse: Items) {

            if (itemRowBinding.ItemDetailViewModel == null) {
                itemRowBinding.ItemDetailViewModel =
                    ItemDetailViewModel(
                        ItemResponse,
                        itemView.context
                    )
            } else {
                itemRowBinding.ItemDetailViewModel!!.setDetail(ItemResponse)
                itemRowBinding.executePendingBindings()
            }

            itemRowBinding.root.Detail.setOnClickListener {
                notifyDataSetChanged()
            }

            itemRowBinding.root.itemLookup.setOnClickListener {
                Log.v(
                    "Clicked_ADAPTER",
                    "Clicked itemLookup adapter :: position -> $adapterPosition"
                )
            }

    }
}

如有任何帮助,我们将不胜感激。

如果您阅读 setBackgroundDrawable's documentation,它需要一个 Drawable 资源 ID,或者 0 来清除背景。 Color 不是 Drawable。所以你可能想使用这个:

holder.itemView.setBackgroundColor(ContextCompat.getColor(context,R.color.white))

试试这个: 它对我有用。

 if(position % 2 == 0){
        holder.itemView.setBackgroundColor(#A6A2A2);
    }else{
        holder.itemview.setBackgroundColor(#FFFFFF);
    }

如果你想设置 drawable 你可以使用 setBackgroundResource

这里你试图在 setBackgroundResouce 中给颜色所以它没有给出结果

您可以使用 setBackgroundColor

设置背景颜色
if(position % 2 == 0) {                           
           holder.itemView.setBackgroundColor(ContextCompat.getColor(context,R.color.White));
        } else {
           holder.itemView.setBackgroundColor(ContextCompat.getColor(context,R.color.Grey));
        }