场景:根据网络获取的xxx名称来加载资源文件里面相应的图片,我写成了如下的方式 ,
有什么方法可以少写这些重复代码? 因为图片还有很多
when(name) {
"name1" -> {
Image( painterResource(R.mipmap.ic_name1), contentDescription = null )
}
"name2" -> {
Image( painterResource(R.mipmap.ic_name2), contentDescription = null )
}
"name3" -> {
Image( painterResource(R.mipmap.ic_name3), contentDescription = null )
}
}
用这个方法应该会比楼上提到的几种方法更加简单
context.getResources().getIdentifier()
解释一下几个参数的取值吧
name:资源名称(例如你 R.mipmap.ic_name1 中的 ic_name1)
defType:可选的资源类型(color、dimen、drawable、id、string、style、layout)
defPackage:一般填自己应用的包名,即 context.getPackageName()
反射>map表>switch case(when)