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

