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

Android如何给FirebaseRecyclerAdapter添加点击事件跳转Activity传值

解决方案

FirebaseRecyclerAdapter本身没有提供全局点击监听方法,点击事件需要绑定到列表子项视图上,你可以直接在onBindViewHolder方法里设置,是改动最小的方案:

步骤1:修改MainActivity的onBindViewHolder逻辑

在原有设置详情的代码后,给ViewHolder的itemView(也就是整个列表项的根视图)添加点击事件:

@Override
protected void onBindViewHolder(@NonNull HomeScreenWorkViewHolder viewHolder, int i, @NonNull HomeWorkView homeWorkView) {
    viewHolder.setdetails(getApplicationContext(), homeWorkView.getName(), homeWorkView.getImage(), homeWorkView.getDescription(), homeWorkView.getLocation());
    // 新增点击事件
    viewHolder.itemView.setOnClickListener(v -> {
        Intent jumpIntent = new Intent(v.getContext(), 你的目标展示Activity.class);
        // 传递数据到新Activity
        jumpIntent.putExtra("work_name", homeWorkView.getName());
        jumpIntent.putExtra("work_image", homeWorkView.getImage());
        jumpIntent.putExtra("work_desc", homeWorkView.getDescription());
        jumpIntent.putExtra("work_location", homeWorkView.getLocation());
        v.getContext().startActivity(jumpIntent);
    });
}

步骤2:目标Activity接收数据展示

在你要跳转的新Activity的onCreate方法中取出传递的参数,渲染到对应的控件上即可:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.你的目标布局);
    // 取出参数
    Intent intent = getIntent();
    String name = intent.getStringExtra("work_name");
    String image = intent.getStringExtra("work_image");
    String description = intent.getStringExtra("work_desc");
    String location = intent.getStringExtra("work_location");
    
    // 以下是你自己的渲染逻辑,比如给TextView赋值、用Picasso加载图片等
    // ...
}

可选优化方案

如果你的适配器需要复用,也可以把点击事件放到ViewHolder的构造方法中,通过回调接口把点击事件抛到外部处理,灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:06:05