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

Firebase Android:通过ListView子项跳转对应Activity的实现问题

嘿,我来帮你搞定这个跳转需求!既然你已经能通过数据的唯一ID打开单个Activity了,那扩展到“Other”和“Cardio”的专属页面跳转其实非常简单,咱们一步步来:

实现思路与代码示例

核心逻辑就是先识别点击的条目是“Cardio”、“Other”还是普通条目,再匹配对应的跳转规则就行。

1. 基于动态数据源的判断(推荐)

假设你的ListView绑定了自定义数据模型(比如WorkoutItem),模型里包含条目标题和保存时的唯一ID,那可以这样写:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // 获取当前点击的条目数据
        WorkoutItem clickedItem = (WorkoutItem) parent.getItemAtPosition(position);
        String itemTitle = clickedItem.getTitle();
        int targetId;

        // 根据条目标题匹配专属ID
        switch (itemTitle) {
            case "Cardio":
                targetId = 1001; // 替换成你预定义的Cardio专属ID
                break;
            case "Other":
                targetId = 1002; // 替换成你预定义的Other专属ID
                break;
            default:
                // 普通条目沿用你原来的唯一ID逻辑
                targetId = clickedItem.getSavedUniqueId();
                break;
        }

        // 跳转逻辑和你原来的一致,传递ID到目标Activity
        Intent intent = new Intent(YourCurrentActivity.this, TargetDetailActivity.class);
        intent.putExtra("SELECTED_ID", targetId);
        startActivity(intent);
    }
});

2. 基于固定条目位置的判断

如果你的ListView是用静态字符串数组填充的(比如{"Cardio", "Other", "跑步", "力量训练"}),那可以直接通过点击的position来判断:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int targetId;
        switch (position) {
            case 0: // 假设第一个条目是Cardio
                targetId = 1001;
                break;
            case 1: // 假设第二个条目是Other
                targetId = 1002;
                break;
            default:
                // 其他条目调用你原来的唯一ID获取逻辑
                targetId = getUniqueIdForPosition(position);
                break;
        }

        // 跳转逻辑同上
        Intent intent = new Intent(YourCurrentActivity.this, TargetDetailActivity.class);
        intent.putExtra("SELECTED_ID", targetId);
        startActivity(intent);
    }
});

3. 如果专属页面是不同的Activity

要是你想让“Cardio”跳转到CardioActivity,“Other”跳转到OtherActivity(而非同一个详情页),可以调整跳转的Activity类:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        WorkoutItem clickedItem = (WorkoutItem) parent.getItemAtPosition(position);
        String itemTitle = clickedItem.getTitle();
        Intent intent;

        switch (itemTitle) {
            case "Cardio":
                intent = new Intent(YourCurrentActivity.this, CardioActivity.class);
                // 如需传递额外数据,继续调用putExtra即可
                break;
            case "Other":
                intent = new Intent(YourCurrentActivity.this, OtherActivity.class);
                break;
            default:
                // 普通条目跳转到原来的详情页
                intent = new Intent(YourCurrentActivity.this, RegularDetailActivity.class);
                intent.putExtra("UNIQUE_ID", clickedItem.getSavedUniqueId());
                break;
        }

        startActivity(intent);
    }
});

最后小提醒

别忘了在AndroidManifest.xml里注册所有用到的Activity哦,不然跳转时会抛出ActivityNotFoundException!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:17:59