Android xml中的嵌套数组

Jos*_*osh 7 java xml arrays android

以前我有一个简单的字符串数组,其中包含一个看起来像的URL

    <string-array name="drawerlinkitems">
      <item>http://www.google.com</item>
      <item>http://www.google2.com</item>
      <item>http://www.google3.com</item>
    </string-array>
Run Code Online (Sandbox Code Playgroud)

我能够通过电话访问值

return getResources().getStringArray(R.array.drawerlinkitems)[number];
Run Code Online (Sandbox Code Playgroud)

非常简单的东西.

我在这一点上的问题是我想做除了抓取url之外的更多动作,所以我想构建一个嵌套数组,如下所示:

<string-array name="draweritems">
    <item>
        <link>http://www.google.com</link>
        <title>Google</title>
        <icon>soon</icon>
    </item>
    <item>
        <link>http://www.google2.com</link>
        <title>Google2</title>
        <icon>soon</icon>
    </item>
    <item>
        <link>http://www.google3.com</link>
        <title>Google3</title>
        <icon>soon</icon>
    </item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

然后使用类似的东西访问它

getResources().getStringArray(R.array.draweritems)[number].getString[link];
Run Code Online (Sandbox Code Playgroud)

要么

getResources().getStringArray(R.array.draweritems)[number].getString[1];
Run Code Online (Sandbox Code Playgroud)

(显然我把getString部分搞定了)

我无法弄清楚是否甚至可以在字符串数组中执行此操作,如果不是,那么替换选项是什么.如果是,我不确定如何引用字符串数组以从子项中获取子值.如果有一种你知道的优越方法,我也不会受到这种解决方案的束缚.任何帮助将非常感激.

mst*_*ias 14

这就是我为完成这样的事情所做的事情:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="menu_items">
        <item>@array/menu_item_dashboard</item>
        <item>@array/menu_item_index</item>
    </array>

    <array name="menu_item_dashboard">
        <item>@drawable/transparent</item>
        <item>Dashboard</item>
        <item>home</item>
    </array>
    <array name="menu_item_index">
        <item>@drawable/transparent</item>
        <item>Title</item>
        <item>index</item>
    </array>
</resources>
Run Code Online (Sandbox Code Playgroud)

并访问:

TypedArray menuResources = getResources().obtainTypedArray(R.array.menu_items);

TypedArray itemDef;

for (int i = 0; i < menuResources.length(); i++) {
    int resId = menuResources.getResourceId(i, -1);
    if (resId < 0) {
        continue;
    }

    itemDef = getResources().obtainTypedArray(resId);
    //itemDef.getDrawable(0)
    //itemDef.getString(1)
    //itemDef.getString(2)
}
Run Code Online (Sandbox Code Playgroud)