如何计算以“fr”开头的drawable文件夹中的项目数?
背景;我想创建一个随机函数来从drawables文件夹中选择一个随机图像。为了使其面向未来,我想将随机数发生器的最大值设置为可以选择的项目数。
答案 0 :(得分:10)
与Android中的其他资源一样,drawable通过'R'类访问,该类只是包含静态整数字段的静态类的集合。除了使用反射之外,没有“得到所有可绘制名称”的方法(至少我不知道)。
您需要一个可绘制的ID列表来随机化。您可以使用反射自动填充此列表:
import java.lang.reflect.Field;
...
Field[] fields = R.drawable.class.getFields();
List<Integer> drawables = new ArrayList<Integer>();
for (Field field : fields) {
// Take only those with name starting with "fr"
if (field.getName().startsWith("fr")) {
drawables.add(field.getInt(null));
}
}
通过这种方式,您可以获得您感兴趣的绘图ID列表。您可以在以后通常使用的地方使用这些ID,例如R.drawable.someResource