在arrays.xml中的Android多维数组

Tor*_*ori 1 android multidimensional-array

在一个arrays.xml文件中,在res文件夹中,定义了几个数组:

       <string-array name="all">
       <item> a1 </item>
       <item> a2 </item>
       </string-array>

       <string-array name="a1">
       <item> x </item>
       <item> y </item>
       </string-array>

        <string-array name="a2">
       <item> z </item>
       <item> t </item>
       </string-array>
Run Code Online (Sandbox Code Playgroud)

我想将"all"数组和序列读入依赖于"all"中的选择的a1或a2数组,而不必构建switch/case语句(真正的数组更复杂).代码看起来像这样,但Java/Android抱怨第二行.它希望R.array像R.array.a1或R.array.a2一样是常数而不是变量.

是否可以执行以下操作(第2行),

            String[] temp_items = getResources().getStringArray(R.array.all1); 
            String[] items = getResources().getStringArray(R.array.temp_items[0]);    
Run Code Online (Sandbox Code Playgroud)

我也可以通过将数组放在java中的实用程序类中并绕过arrays.xml文件来解决这个问题.

这可能吗?a1 a2

       <string-array name="a1">
       <item> x </item>
       <item> y </item>
       </string-array>

        <string-array name="a2">
       <item> z </item>
       <item> t </item>
       </string-array>
Run Code Online (Sandbox Code Playgroud)

小智 5

我希望这段代码有用.您可以通过resourceName从函数getIdentifier()获取resourceID.

for(int i = 1; i < 3; i++)
{
    int arrayID = getResources().getIdentifier("a" + i,"array",getPackageName());
    items[i] = getResources().getStringArray(arrayID);
}
Run Code Online (Sandbox Code Playgroud)