Android RecyclerView根据不同的item设置不同的背景颜色

话不多说,直接上效果图:
在这里插入图片描述
我就直接上关键的代码了,相信聪明的你们一定能举一反三!

1、根据类型变色

在 onBindViewHolder里写上如下代码!

   @Override
    public void onBindViewHolder(@NonNull final MyAdapter.ViewHolder viewHolder, final int i) {
    
    	//	得到我们在 RecyclerView 中 自定义的 ViewHolder 的对象
        final ViewHolder recViewHolderLeft = (ViewHolder) viewHolder;
        
        // 根据不同的类型设置它们不同的背景颜色,
        if (bean.getImgid().equals("停车费")){
            recViewHolderLeft.itemView.setBackgroundColor(Color.YELLOW);
        }else if (bean.getImgid().equals("过路费")){
            recViewHolderLeft.itemView.setBackgroundColor(Color.GREEN);
        }else if (bean.getImgid().equals("油费")){
            recViewHolderLeft.itemView.setBackgroundColor(Color.BLUE);
        }else if (bean.getImgid().equals("罚款")){
            recViewHolderLeft.itemView.setBackgroundColor(Color.RED);
        }
        
    }

itemView 表示每一个 item 的view视图,更改的是整个item的背景颜色!

根据点击的item变色

    private View.OnClickListener mOnClickListener;

    @Override
    public void onBindViewHolder(@NonNull Vh vh, int position) {
        vh.setData(mList.get(position),position);
    }

	  class Vh extends RecyclerView.ViewHolder {

        ImageView mThumb;
        TextView mName;

        public Vh(View itemView) {
            super(itemView);
            itemView.setOnClickListener(mOnClickListener);
        }

        void setData(GameClassifyBean.ClassifyListBean bean,int position) {
            bean.itemPosition = position;	//因为 setTag 我们传的是bean,所以我这里记一下每个bean的坐标
            itemView.setTag(bean);			
            // 判断当前项是否选中,设置背景色
            if (selectedPosition == position) {
                itemView.setBackground(ContextCompat.getDrawable(mContext,R.drawable.circle_game_classify_true));
                mName.setTextColor(Color.WHITE);
            } else {
                itemView.setBackground(ContextCompat.getDrawable(mContext,R.drawable.circle_game_classify));
                mName.setTextColor(Color.parseColor("#323232"));
            }
            ImgLoader.display(mContext, bean.thumb, mThumb);
            mName.setText(bean.name);
        }
    }
        mOnClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Object tag = v.getTag();
                if (tag != null) {
                    MyBean bean = (MyBean) tag;
                    // 更新选中的位置
                    selectedPosition = bean.itemPosition;
                    // 通知RecyclerView刷新列表
                    notifyDataSetChanged();
                }
            }
        };
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值