android - 在 Kotlin 中选择不同的随机图像
问题描述
我有一个关于 Kotlin 代码的问题,我有一个任务,我必须从数组中随机生成图像,但问题是它们必须彼此不同。有四个图像视图,单击它们后,其中一个视图必须随机更改其来源。我已经写了这段代码,但图像并不明显
class MainActivity : AppCompatActivity(), View.OnClickListener {
private val images = arrayOf(
R.mipmap.fruit,
R.mipmap.banana,
R.mipmap.watermelon,
R.mipmap.apricot,
R.mipmap.cherry,
R.mipmap.strawberry,
R.mipmap.melon,
R.mipmap.kiwi
)
private lateinit var imageViews:Array<ImageView>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
init()
}
private fun init() {
imageViews = arrayOf(imageView_1, imageView_2, imageView_3, imageView_4)
imageView_1.setOnClickListener(this)
imageView_2.setOnClickListener(this)
imageView_3.setOnClickListener(this)
imageView_4.setOnClickListener(this)
}
override fun onClick(v: View?) {
randomImageView().setImageResource(randomImage())
}
private fun randomImage() = images[(images.indices).random()]
private fun randomImageView() = imageViews[(imageViews.indices).random()]
}
解决方案
我会制作imageViews
一张地图,该地图还可以跟踪视图上设置了哪些图像。然后,您可以通过从选择池中删除正在使用的图像,从减少的集合中选择您的随机图像。
private val imageViews = MutableMap<ImageView, Int?>()
// in init ...
imageViews.putAll(listOf(imageView_1, imageView_2, imageView_3, imageView_4).map { it to null })
// ...
override fun onClick(v: View?) {
val view = randomImageView()
val image = randomImage()
view.setImageResource(image)
imageViews[view] = image
}
fun randomImage() = (images - imageViews.values).random()
推荐阅读
- python - 在 Python 中更新列表列表中的特定列表
- web-crawler - 我的 robots.txt 文件中的以下语法是否会阻止所有爬虫将我的网站编入索引?
- python - 初学者 Python - 在列表中打印值
- firebase - Firebase,有什么比云调度程序更好的吗?
- python-3.x - Matplotlib 归零的刺在平移时伸出轴外
- python - 如何根据从文本文件导入的数据创建 Python 字典?
- api - 在 asp.net API HttpGet{id} 有效,但是当我将 {id} 更改为其他内容时,它不起作用
- ios - WKExtendedRuntimeSession 在大约 30 秒后停止?
- typescript - 如何清除 NextJs GetStaticPaths 缓存/“取消发布”动态路由?
- ios - Xcode 12.3 命令协同设计失败,退出代码为非零