场景
今天做到天气,遇到一个问题,就是天气有多中类型,这个时候需要与本地的图片ID对应起来,现在把所有天气类型ID导入到drawble中,我该如何高效的与服务器返回的类型ID对应起来?
简单粗暴:
public id getResId(String name) {
if ("w_100".equals(name)) {
return R.drawable.w_100;
}else if("w_101".equals(name)){
return R.drawable.w_101;
}
...
return -1;
}
这样写是不是有点太Low了。。。。。
于是我就找到了一个最高效的方法,今天在这里总结分享出来,希望更多遇到的小伙伴能使用到。
终极法:
/**
* 根据字符串获取资源ID
*
* @param variableName
* @param c
* @return
*/
public static int getResId(String variableName, Class<?> c) {
try {
Field idField = c.getDeclaredField(variableName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
使用很简单:
- ResUtils.getResId("w_100", R.drawable.class)
直接拿去使用吧,如对你有用,请在下面支持我一下,谢谢。