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

如何实现RecyclerView的RecentsAdapter每个条目跳转至对应Activity?

解决Recents条目点击跳转对应Activity的问题

问题描述

跟着教程开发App,其中“Recents”行展示地点照片,但点击任意照片都会打开同一个DetailsActivity。已为每张照片创建4个独立Activity,需要实现点击不同照片跳转对应Activity。

解决方案

通过给数据类添加目标Activity字段,配合Adapter动态获取跳转目标来实现:

1. 扩展RecentsData数据类

在RecentsData中新增存储目标Activity的字段,并补充构造方法和getter:

public class RecentsData {
    // 原有字段:countryName、placeName、price、imageUrl
    private Class<?> targetActivity;

    // 更新构造方法,加入targetActivity参数
    public RecentsData(String countryName, String placeName, String price, int imageUrl, Class<?> targetActivity) {
        this.countryName = countryName;
        this.placeName = placeName;
        this.price = price;
        this.imageUrl = imageUrl;
        this.targetActivity = targetActivity;
    }

    // 获取目标Activity的getter方法
    public Class<?> getTargetActivity() {
        return targetActivity;
    }
}

2. 修改Adapter的点击事件逻辑

在RecentsAdapter的onBindViewHolder方法中,替换固定的跳转目标,改为从当前条目数据中获取对应Activity:

@Override
public void onBindViewHolder(@NonNull RecentsViewHolder holder, int position) {
    holder.countryName.setText(recentsDataList.get(position).getCountryName());
    holder.placeName.setText(recentsDataList.get(position).getPlaceName());
    holder.price.setText(recentsDataList.get(position).getPrice());
    holder.placeImage.setImageResource(recentsDataList.get(position).getImageUrl());

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 获取当前条目绑定的目标Activity
            Class<?> targetActivity = recentsDataList.get(position).getTargetActivity();
            Intent intent = new Intent(context, targetActivity);
            context.startActivity(intent);
        }
    });
}

3. 初始化数据时绑定对应Activity

创建RecentsData列表时,为每个条目指定对应的Activity类:

List<RecentsData> recentsDataList = new ArrayList<>();
// 根据实际的Activity类替换下面的ActivityA、ActivityB等
recentsDataList.add(new RecentsData("示例国家1", "示例地点1", "¥1000", R.drawable.place_img1, ActivityA.class));
recentsDataList.add(new RecentsData("示例国家2", "示例地点2", "¥1200", R.drawable.place_img2, ActivityB.class));
recentsDataList.add(new RecentsData("示例国家3", "示例地点3", "¥900", R.drawable.place_img3, ActivityC.class));
recentsDataList.add(new RecentsData("示例国家4", "示例地点4", "¥1500", R.drawable.place_img4, ActivityD.class));

// 将列表传入Adapter
RecentsAdapter adapter = new RecentsAdapter(this, recentsDataList);

完成以上修改后,点击不同的Recents条目就会打开对应的Activity了。

内容的提问来源于stack exchange,提问作者Mohamed bourhane eldine Siad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:57:47