Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 统计可绘图文件夹中以特定字符串开头的项目_Android_Resources_Drawable - Fatal编程技术网

Android 统计可绘图文件夹中以特定字符串开头的项目

Android 统计可绘图文件夹中以特定字符串开头的项目,android,resources,drawable,Android,Resources,Drawable,如何计算可绘图文件夹中以“fr”开头的项目数 背景;我想创建一个随机发生器,从drawables文件夹中选择一个随机图像。为了保证将来的安全,我想将随机化器的最大值设置为可供挑选的项目数。与Android中的其他资源一样,drawables是通过“R”类访问的,它只是包含静态整型字段的静态类的集合。除了使用反射,没有“获取所有可绘制名称”的方法(至少我不知道) 您需要一个可绘制ID的列表来进行随机化。您可以使用反射自动填充此列表: import java.lang.reflect.Fie

如何计算可绘图文件夹中以“fr”开头的项目数


背景;我想创建一个随机发生器,从drawables文件夹中选择一个随机图像。为了保证将来的安全,我想将随机化器的最大值设置为可供挑选的项目数。

与Android中的其他资源一样,drawables是通过“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));
        }
    }
import java.lang.reflect.Field;
...
Field[]fields=R.drawable.class.getFields();
List drawables=new ArrayList();
用于(字段:字段){
//只取名称以“fr”开头的
if(field.getName().startsWith(“fr”)){
drawables.add(field.getInt(null));
}
}

通过这种方式,您可以获得感兴趣的可提取项ID列表。您可以稍后在通常使用的位置使用这些ID,例如R.drawable.someResource

太好了!field.get(i)将获取id,int i可以随机化为fields.size()作为最大值。谢谢托马斯兹,多亏了你的回答,我才能够写作。非常感谢。这个答案是否仍然是最新的,或者在过去三年中有没有更好的方法出现?