首页 > 解决方案 > 使用 Kotlin 创建扩展函数以将资源分配给 ImageView

问题描述

我开始使用 Kotlin 有趣的扩展。我已经创建了一些对我来说可以正常工作的东西,但是我有一个 ImageView 上下文不起作用,我不明白为什么。

扩展功能是这样的:

fun ImageView.imageCardAssignation(imageSelected: Int): Int {

    when(imageSelected){
        0 -> R.drawable.card_amazon
        1 -> R.drawable. card_card
        2 -> R.drawable. card_house
    }
    return imageSelected
}

这个想法是,根据您作为参数传递的数字 (Int),将一个或另一个图像分配给 ImageView。

我调用它如下:

vb.selectImage.setImageResource (imageCardAssignation (0))

但是ID指示错误:

- none of the following candidates is applicable because os receiver type mismatch

我认为上下文必须是 ImageView

我究竟做错了什么?

非常感谢和问候。

标签: androidkotlinimageviewextension-function

解决方案


它应该是这样的:

    fun ImageView.imageCardAssignation(imageSelected: Int): Int {

    return when(imageSelected){
        0 -> R.drawable.card_amazon
        1 -> R.drawable.card_card
        2 -> R.drawable.card_house
    }

}

我假设“R.drawable.card_amazon”是一个 Int,否则返回类型将是错误的


推荐阅读