在 Kotlin 中使用变量名插入图像

Insert Image using variable name in Kotlin

我目前正在开发一个应用程序,其中包含与每个字符和图像关联的列表。

我想使用 for 循环为所有字符插入图像,而不实际对它们的图像名称进行硬编码:

示例:

var agentsList = listOf(
        "Astra",
        "Breach",
        "Brimstone",
        "Chamber",
        "Cypher",
        "Jett",
        "KAY/O",
        "Killjoy",
        "Neon",
        "Omen",
        "Phoenix",
        "Raze",
        "Reyna",
        "Sage",
        "Skye",
        "Sova",
        "Viper",
        "Yoru"
    )
for (agent in agentsList) {
    dataList.add(DataModel(agent, R.drawable.agent)
}

在这里,R.drawable.agent 是我想插入图像的地方,但我希望 for 循环使用 agentsList 中的字符串资源为我完成它。

我使用与 agentsList 中的字符相同的字符串保存图像,所以这不会成为问题。

您可以使用字符串名称获取可绘制资源标识符:

for (agent in agentsList) {
    val resources: Resources = context.resources
    val resourceId: Int = resources.getIdentifier(agent, "drawable", context.packageName)
    dataList.add(DataModel(agent, resourceId)
}