【问题标题】:Change Android RecyclerView Card background dynamicall更改Android RecyclerView Card背景动态全部
【发布时间】:2026-02-08 02:10:01
【问题描述】:

我使用this 文章在 android 中创建卡片。这是完美的工作!我想以编程方式设置每张卡片的背景颜色。

我已经检查了this 在 SO 中的帖子,但不知何故我无法使用接受的答案,上面写着

CardView card = ...
card.setCardBackgroundColor(color);

这是适配器类

import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MyRecyclerViewAdapter extends RecyclerView
        .Adapter<MyRecyclerViewAdapter
        .DataObjectHolder> {
    private static String LOG_TAG = "MyRecyclerViewAdapter";
    private ArrayList<DataObject> mDataset;
    private static MyClickListener myClickListener;

    public static class DataObjectHolder extends RecyclerView.ViewHolder
            implements View
            .OnClickListener {
        TextView label;
        TextView dateTime;

        public DataObjectHolder(View itemView) {
            super(itemView);
            label = (TextView) itemView.findViewById(R.id.textView);
            dateTime = (TextView) itemView.findViewById(R.id.textView2);
            Log.i(LOG_TAG, "Adding Listener");
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            myClickListener.onItemClick(getAdapterPosition(), v);
        }
    }

    public void setOnItemClickListener(MyClickListener myClickListener) {
        this.myClickListener = myClickListener;
    }

    public MyRecyclerViewAdapter(ArrayList<DataObject> myDataset) {
        mDataset = myDataset;
    }

    @Override
    public DataObjectHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_view_row, parent, false);

        DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
        return dataObjectHolder;
    }

    @Override
    public void onBindViewHolder(DataObjectHolder holder, int position) {
        holder.label.setText(mDataset.get(position).getmText1());
        holder.dateTime.setText(mDataset.get(position).getmText2());
    }

    public void addItem(DataObject dataObj, int index) {
        mDataset.add(index, dataObj);
        notifyItemInserted(index);
    }

    public void deleteItem(int index) {
        mDataset.remove(index);
        notifyItemRemoved(index);
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }

    public interface MyClickListener {
        public void onItemClick(int position, View v);
    }
}

如何以编程方式设置 CardView 的颜色。

感谢您的帮助。

【问题讨论】:

  • 这个 sn-p 代码不起作用?你能发布你的适配器类吗?
  • 我已经编辑了我的问题并进入了适配器类
  • 修改背景卡颜色的代码在哪里?
  • 这正是我的问题。我在哪里可以做?

标签: android android-recyclerview


【解决方案1】:

所以你可以这样做:

@Override
public void onBindViewHolder(DataObjectHolder holder, int position) {
    holder.label.setText(mDataset.get(position).getmText1());
    holder.dateTime.set

    if(position % 2 == 0){

        holder.card.setCardBackgroundColor(Color.parseColor("#E6E6E6"));

    } else {

        holder.card.setCardBackgroundColor(Color.parseColor("#000000"));
    }
}

【讨论】: