在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()

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Python cx_Oracle 插入带毫秒的时间戳。

2022-4-20 13:08:44

解决方案

在python中更新添加到json(嵌套)。

2022-4-20 13:08:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索