Java 将字符串解析为资源名称

Java 将字符串解析为资源名称,java,android,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.getResour

我的
/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

有没有一种方法可以在不创建长数组的情况下以某种方式循环此操作?

您可以创建一个
int
数组来保存可绘制资源的值。然后循环遍历这个数组

int [] array = {R.drawable.thumb_01, R.drawable.thumb_02, ...};
Drawable[] thumbs = new Drawable[array.length];
for(int i = 0; i < array.length; i++){
    thumbs[i] = context.getResources().getDrawable(arr[i]);
}

您可以创建一个
int
数组来保存可绘制资源的值。然后循环遍历这个数组

int [] array = {R.drawable.thumb_01, R.drawable.thumb_02, ...};
Drawable[] thumbs = new Drawable[array.length];
for(int i = 0; i < array.length; i++){
    thumbs[i] = context.getResources().getDrawable(arr[i]);
}

您可以创建一个
int
数组来保存可绘制资源的值。然后循环遍历这个数组

int [] array = {R.drawable.thumb_01, R.drawable.thumb_02, ...};
Drawable[] thumbs = new Drawable[array.length];
for(int i = 0; i < array.length; i++){
    thumbs[i] = context.getResources().getDrawable(arr[i]);
}

您可以创建一个
int
数组来保存可绘制资源的值。然后循环遍历这个数组

int [] array = {R.drawable.thumb_01, R.drawable.thumb_02, ...};
Drawable[] thumbs = new Drawable[array.length];
for(int i = 0; i < array.length; i++){
    thumbs[i] = context.getResources().getDrawable(arr[i]);
}

我希望我正确地理解了你的问题。如果是这样的话,我正在开发的一款应用程序也有类似的情况。您可以做的是声明一个Drawable数组,并在循环遍历资源中的每个“thumb”时将每个新的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()));
}
//假设您将拇指数分配给整数'R.integer.numberofthumbs'
int numberOfThumbs=context.getResources().getInteger(R.integer.numberOfThumbs);
Drawable[]thumbs=新的Drawable[numberOfThumbs];
for(int i=0;i
这基本上就是我在代码中使用的方法,它工作得非常完美。由于for循环中的命名,标有10以下数字的拇指必须没有前导零。然而,这可以很容易地更改以适合您当前的命名方法。希望我离得不远,这确实有帮助


干杯

我希望我正确理解了你的问题。如果是这样的话,我正在开发的一款应用程序也有类似的情况。您可以做的是声明一个Drawable数组,并在循环遍历资源中的每个“thumb”时将每个新的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()));
}
//假设您将拇指数分配给整数'R.integer.numberofthumbs'
int numberOfThumbs=context.getResources().getInteger(R.integer.numberOfThumbs);
Drawable[]thumbs=新的Drawable[numberOfThumbs];
for(int i=0;i
这基本上就是我在代码中使用的方法,它工作得非常完美。由于for循环中的命名,标有10以下数字的拇指必须没有前导零。然而,这可以很容易地更改以适合您当前的命名方法。希望我离得不远,这确实有帮助


干杯

我希望我正确理解了你的问题。如果是这样的话,我正在开发的一款应用程序也有类似的情况。您可以做的是声明一个Drawable数组,并在循环遍历资源中的每个“thumb”时将每个新的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()));
}
//假设您将拇指数分配给整数'R.integer.numberofthumbs'
int numberOfThumbs=context.getResources().getInteger(R.integer.numberOfThumbs);
Drawable[]thumbs=新的Drawable[numberOfThumbs];
for(int i=0;i
这基本上就是我在代码中使用的方法,它工作得非常完美。由于for循环中的命名,标有10以下数字的拇指必须没有前导零。然而,这可以很容易地更改以适合您当前的命名方法。希望我离得不远,这确实有帮助


干杯

我希望我正确理解了你的问题。如果是这样的话,我正在开发的一款应用程序也有类似的情况。您可以做的是声明一个Drawable数组,并在循环遍历资源中的每个“thumb”时将每个新的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()));
}
//假设您将拇指数分配给整数'R.integer.numberofthumbs'
int numberOfThumbs=context.getResources().getInteger(R.integer.numberOfThumbs);
Drawable[]thumbs=新的Drawable[numberOfThumbs];
for(int i=0;i
这基本上就是我在代码中使用的方法,它工作得非常完美。由于for循环中的命名,标有10以下数字的拇指必须没有前导零。然而,这可以很容易地更改以适合您当前的命名方法。希望我离得不远,这确实有帮助


干杯

最后,我用更少的代码得到了它,并且没有创建带有int或drawable的数组

创建/res/values/array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="thumbs">
    <item>@drawable/thumb_01</item>
    <item>@drawable/thumb_02</item>
    <item>@drawable/thumb_03</item>
    <item>@drawable/thumb_04</item>
    <item>@drawable/thumb_05</item>
    <item>@drawable/thumb_06</item>
    <item>@drawable/thumb_07</item>
    <item>@drawable/thumb_08</item>
    <item>@drawable/thumb_09</item>
    <item>@drawable/thumb_10</item>
    <item>@drawable/thumb_11</item>
    <item>@drawable/thumb_12</item>
    <item>@drawable/thumb_13</item>
    <item>@drawable/thumb_14</item>
    <item>@drawable/thumb_15</item>
    <item>@drawable/thumb_16</item>
    <item>@drawable/thumb_17</item>
    <item>@drawable/thumb_18</item>
    <item>@drawable/thumb_19</item>
    <item>@drawable/thumb_20</item>
</string-array>
</resources>

最后,我用更少的代码得到了它,并且没有使用int或drawable创建数组

创建/res/values/array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="thumbs">
    <item>@drawable/thumb_01</item>
    <item>@drawable/thumb_02</item>
    <item>@drawable/thumb_03</item>
    <item>@drawable/thumb_04</item>
    <item>@drawable/thumb_05</item>
    <item>@drawable/thumb_06</item>
    <item>@drawable/thumb_07</item>
    <item>@drawable/thumb_08</item>
    <item>@drawable/thumb_09</item>
    <item>@drawable/thumb_10</item>
    <item>@drawable/thumb_11</item>
    <item>@drawable/thumb_12</item>
    <item>@drawable/thumb_13</item>
    <item>@drawable/thumb_14</item>
    <item>@drawable/thumb_15</item>
    <item>@drawable/thumb_16</item>
    <item>@drawable/thumb_17</item>
    <item>@drawable/thumb_18</item>
    <item>@drawable/thumb_19</item>
    <item>@drawable/thumb_20</item>
</string-array>
</resources>

最后,我用更少的代码得到了它,并且没有使用int或drawable创建数组

创建/res/values/array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="thumbs">
    <item>@drawable/thumb_01</item>
    <item>@drawable/thumb_02</item>
    <item>@drawable/thumb_03</item>
    <item>@drawable/thumb_04</item>
    <item>@drawable/thumb_05</item>
    <item>@drawable/thumb_06</item>
    <item>@drawable/thumb_07</item>
    <item>@drawable/thumb_08</item>
    <item>@drawable/thumb_09</item>
    <item>@drawable/thumb_10</item>
    <item>@drawable/thumb_11</item>
    <item>@drawable/thumb_12</item>
    <item>@drawable/thumb_13</item>
    <item>@drawable/thumb_14</item>
    <item>@drawable/thumb_15</item>
    <item>@drawable/thumb_16</item>
    <item>@drawable/thumb_17</item>
    <item>@drawable/thumb_18</item>
    <item>@drawable/thumb_19</item>
    <item>@drawable/thumb_20</item>
</string-array>
</resources>

最后,我用更少的代码得到了它,而且没有