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

安卓开发:如何通过ID点击赛事列表卡片打开对应指定Activity

实现方案

核心修改逻辑

你当前代码中所有卡片点击详情都是跳转同一个DetailActivity,只要根据卡片的位置/赛事特征判断跳转目标即可。RecyclerView的项位置默认从0开始计数,正好匹配你要的「第1张(position=0)跳ActivityDetailOne、第2张跳ActivityDetailTwo、第3张跳ActivityDetailThree」的需求。

方案1:按位置跳转(最简单,适合固定3场赛事的场景)

找到MyViewHolder类里bind方法中的btnDetail.setOnClickListener代码块,直接替换为以下内容即可:

btnDetail.setOnClickListener {
    // 获取当前卡片的位置,默认从0开始计数
    val currentPosition = adapterPosition
    // 根据位置匹配跳转的Activity
    val targetActivity = when(currentPosition) {
        0 -> ActivityDetailOne::class.java
        1 -> ActivityDetailTwo::class.java
        2 -> ActivityDetailThree::class.java
        // 防止越界的默认配置,你只有3条数据可以不用修改
        else -> ActivityDetailOne::class.java
    }
    val intent = Intent(context, targetActivity)
    // 如果需要往详情页传赛事数据,可以加额外参数,比如传赛事ID:
    // intent.putExtra("match_id", match.id.toString())
    startActivity(intent)
}

方案2:按赛事特征跳转(更稳定,推荐)

如果之后你可能调整赛事排序,用位置判断会出错,可以直接根据赛事队伍属性匹配跳转,逻辑更稳妥:

btnDetail.setOnClickListener {
    val targetActivity = when {
        // 切尔西vs曼城的赛事跳第一个详情页
        match.firstCommand == "Chelsea" && match.secondCommand == "Manchester City" -> ActivityDetailOne::class.java
        // 埃弗顿vs诺维奇的赛事跳第二个详情页
        match.firstCommand == "Everton" && match.secondCommand == "Norvich City" -> ActivityDetailTwo::class.java
        // 布伦特福德vs利物浦的赛事跳第三个详情页
        match.firstCommand == "Brentford" && match.secondCommand == "Liverpool" -> ActivityDetailThree::class.java
        else -> ActivityDetailOne::class.java
    }
    val intent = Intent(context, targetActivity)
    startActivity(intent)
}

注意事项

  • 请确保你创建的ActivityDetailOne、ActivityDetailTwo、ActivityDetailThree三个Activity已经在项目的AndroidManifest.xml中完成注册,否则跳转时会触发崩溃。
  • 如果需要在详情页展示对应赛事的信息,可以在Intent中携带赛事ID/其他字段,在详情页通过intent.getStringExtra("match_id")这类方法即可获取传递的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:39:04