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
相关产品推荐
相关产品推荐

