Question: I am trying to implement a resource data structure that includes an array of arrays, specifically strings. The issue I run into is how to get the sub-array objects and their specific values. Here is what my resource file looks like....

```
<resources>
   <array name="array0">
     <item>
       <string-array name="array01">
         <item name="id">1</item>
         <item name="title">item one</item>
       </string-array>
     </item>
     <item>
       <string-array name="array02">
         <item name="id">2</item>
         <item name="title">item two</item>
       </string-array>
     </item>
     <item>
       <string-array name="array03">
         <item name="id">3</item>
         <item name="title">item three</item>
       </string-array>
     </item>
   </array>
</resources>

```

Then, in my Java code I retrieve the array and try to access the sub elements like so...

```
TypedArray typedArray = getResources().obtainTypedArray(R.array.array0);

TypedValue typedValue = null;

typedArray.getValue(0, typedValue);

```

At this point the typedArray object should represent the string-array "array01", however, I don't see how to retrieve the "id" and "title" string elements. Any help would be appreciated, thanks in advance.

Answer: 
You can almost do what you want. You have to declare each array separately and then an array of references. Something like this:

```
<string-array name="array01">
    <item name="id">1</item>
    <item name="title">item one</item>
</string-array>
<!-- etc. -->
<array name="array0">
    <item>@array/array01</item>
    <!-- etc. -->
</array>

```

Then in your code you do something like this:

```
Resources res = getResources();
TypedArray ta = res.obtainTypedArray(R.array.array0);
int n = ta.length();
String[][] array = new String[n][];
for (int i = 0; i < n; ++i) {
    int id = ta.getResourceId(i, 0);
    if (id > 0) {
        array[i] = res.getStringArray(id);
    } else {
        // something wrong with the XML
    }
}
ta.recycle(); // Important!

```
according to @Ted Hopp answer, more elegant way:

```
<integer-array name="id_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</integer-array>
<string-array name="name_array">
    <item>name 1</item>
    <item>name 2</item>
    <item>name 3</item>
</string-array>
<array name="array0">
    <item>@array/id_array</item>
    <item>@array/name_array</item>
</array>

```

make sure sub arrays row count is identical.  

enjoy write code to access array cells!  

android is still a kid while maintain the ugly "item" tag of the TypedArray "array0".  

in my opinion, the most flexible should be:

```
<array name="array0">
    <integer-array name="id_array">
        <item>1</item>
        <item>2</item>
        <item>3</item>
    </integer-array>
    <string-array name="name_array">
        <item>name 1</item>
        <item>name 2</item>
        <item>name 3</item>
    </string-array>
</array>

```

but don't do that because that's not android way :)