java - 将字符串解析为资源名称

标签 java android

我的 /res 文件夹中有图像资源,例如拇指。现在,我有 30 个拇指,我现在启动数组的操作是:

Drawable[] thumbs = new Drawable[30];
thumbs[0] = context.getResources().getDrawable(R.drawable.thumb_01);
thumbs[1] = context.getResources().getDrawable(R.drawable.thumb_02);
thumbs[2] = context.getResources().getDrawable(R.drawable.thumb_03);
//this way 27 times more

有没有办法以某种方式循环这个而不创建一个长数组?

最佳答案

我希望我正确理解你的问题。如果是这样,我正在开发的应用程序中也有非常相似的情况。您可以做的是声明一个 Drawable 数组,并在循环访问资源中的每个“拇指”时将每个新的 Drawable 添加到该数组中。我认为拇指的数量是有限的,因为您是从资源中检索它们的。如果是这种情况,您还可以在包含拇指的文件中指定有多少个拇指。

//assume you assign the number of thumbs to integer 'R.integer.numberofthumbs'
int numberOfThumbs = context.getResources().getInteger(R.integer.numberofthumbs);
Drawable[] thumbs = new Drawable[numberOfThumbs];

for(int i = 0; i < numberOfThumbs; i++){
    thumbs[i]= getResources().getDrawable(getResources().getIdentifier("thumb_" + i, "drawable", getPackageName()));
}

这本质上是我在代码中使用的方法,并且效果很好。由于 for 循环中的命名,标有 10 以下数字的拇指必须没有前导零。但是,可以轻松更改它以适合您当前的命名方法。希望我没有离得太远,这确实有帮助。

干杯

关于java - 将字符串解析为资源名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983935/

相关文章:

java - 使用正则表达式验证

c# - 为什么 Xamarin 不允许 Android 上的某些文件名?

java - 以编程方式更改 PopupMenu 项目的标题

android - 如何在不使用编码的情况下将数据放入数据库,以在android应用程序中使用

android - Eclipse ADT 在哪里存储默认 keystore 路径?

java - 复选框节点渲染器和编辑器

java - REST 如何传递空路径参数?

java - JNLP+代理+流式下载文件问题

java - MySQL SUM 函数求和所有的钱

android - scrollView中ImageView的动态高度