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

Android如何使用if-else为ImageView设置条件判断实现点击计分

问题根因

你的点击逻辑里连续调用了两次random.nextInt(oneandtwo.size),两次调用会各自生成独立的随机索引,两个结果没有关联:

  • 第一次调用生成的索引用来给ImageView设置显示的图片
  • 第二次调用生成的索引用来判断是否满足加分条件
    两次随机结果不一致时,就会出现实际显示的图片和加分判断不匹配的问题,比如设置图片时抽到了数字2的资源,判断加分时抽到了数字1的资源,就会触发显示数字2仍加分的异常。
    另外你代码里val random = Random的写法也不规范,Random类的实例不需要在每次点击时重复创建,放在点击事件外层复用即可。
修复后代码
var score = 0
val oneandtwo: IntArray = intArrayOf(
    R.drawable.ic_baseline_looks_one_24,
    R.drawable.ic_baseline_looks_two_24
)
// 提前初始化随机数实例,复用即可
val random = Random()

binding.imageView.setOnClickListener {
    // 单次点击只生成一次随机值,拿到当前选中的图片资源ID
    val selectedImgRes = oneandtwo[random.nextInt(oneandtwo.size)]
    // 给ImageView设置图片
    binding.imageView.setImageResource(selectedImgRes)
    // 用同一个选中的资源ID做判断,完全匹配当前显示的图片
    if (selectedImgRes == R.drawable.ic_baseline_looks_one_24) {
        score++
        binding.textView.text = score.toString()
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:06:05