You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将RecyclerView点击项的背景色传递至下一个Activity布局?

实现RecyclerView点击项背景色传递到下一个Activity

这个需求其实很简单,核心就是把点击项的颜色值通过Intent传递给目标Activity,然后在目标页面设置布局背景就行。我结合你的适配器代码,给你一步步说怎么实现:

第一步:在RecyclerView适配器里添加点击事件处理

首先先修正你适配器里的小细节(构造函数的参数类型要和成员变量对应),然后在onBindViewHolder方法里给每个Item设置点击监听,把颜色值通过Intent传出去:

public class AdapterColors extends RecyclerView.Adapter<AdapterColors.MyViewholder> {
    List<Colors> listArray;
    Context context;

    // 修正构造函数的参数类型,和成员变量List<Colors>对应
    public AdapterColors(List<Colors> list, Context context) {
        this.listArray = list;
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 这里是你加载Item布局的代码,比如:
        View view = LayoutInflater.from(context).inflate(R.layout.item_color, parent, false);
        return new MyViewholder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewholder holder, int position) {
        Colors currentColorItem = listArray.get(position);
        // 先给当前Item设置背景色(假设你的Colors类有getColor()方法返回int类型的颜色值,比如Color.RED)
        holder.itemView.setBackgroundColor(currentColorItem.getColor());

        // 设置Item点击事件
        holder.itemView.setOnClickListener(v -> {
            // 获取当前点击项的颜色值
            int selectedColor = currentColorItem.getColor();
            // 创建Intent,跳转至你的目标Activity(替换成你实际的Activity类名)
            Intent intent = new Intent(context, TargetActivity.class);
            // 把颜色值作为额外数据传递,键名可以自定义,比如"SELECTED_COLOR"
            intent.putExtra("SELECTED_COLOR", selectedColor);
            // 启动目标Activity
            context.startActivity(intent);
        });
    }

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

    public static class MyViewholder extends RecyclerView.ViewHolder {
        public MyViewholder(@NonNull View itemView) {
            super(itemView);
            // 这里是你初始化Item中控件的代码
        }
    }
}

第二步:在目标Activity中接收颜色并设置背景

接下来在你要跳转的Activity里,获取Intent传递过来的颜色值,然后设置给布局的背景:

public class TargetActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_target);

        // 获取传递过来的颜色值,第二个参数是默认值(比如白色),防止没有传值的情况
        int selectedColor = getIntent().getIntExtra("SELECTED_COLOR", Color.WHITE);
        // 获取你的布局根视图(替换成你实际布局里的根控件ID)
        View rootLayout = findViewById(R.id.root_layout_of_target);
        // 设置背景色
        rootLayout.setBackgroundColor(selectedColor);
    }
}

一些需要注意的细节

  • 如果你的Colors类存储的是颜色资源ID(比如R.color.deep_blue),而不是直接的颜色int值,那传递的时候要稍微调整:在适配器里获取实际颜色值:int selectedColor = ContextCompat.getColor(context, currentColorItem.getColorResId());
  • 确保你的目标Activity已经在AndroidManifest.xml中注册了,不然会启动失败;
  • 要是需要传递更复杂的颜色信息(比如ARGB的详细值),也可以拆分成多个int传递,不过一般直接传颜色int值就足够了。

内容的提问来源于stack exchange,提问作者Ness

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:01:31