【问题标题】:How to get name of arrays如何获取数组的名称
【发布时间】:2013-11-29 09:49:15
【问题描述】:

我有这个 array.xml

<resources>

    <string-array name="Abarth">
        <item name="id">1</item><item name="title">500</item>
        <item name="id">2</item><item name="title">Grande Punto</item>
        <item name="id">3</item><item name="title">Punto Evo</item>
        <item name="id">4</item><item name="title">500c</item>
        <item name="id">5</item><item name="title">695</item>
        <item name="id">6</item><item name="title">Punto</item>
    </string-array>

    <string-array name="Alfa_Romeo">
        <item name="id">1</item><item name="title">155</item>
        <item name="id">2</item><item name="title">156</item>
        <item name="id">3</item><item name="title">159</item>
        <item name="id">4</item><item name="title">164</item>
        <item name="id">5</item><item name="title">145</item>
        <item name="id">6</item><item name="title">147</item>
        <item name="id">7</item><item name="title">146</item>
        <item name="id">8</item><item name="title">Gtv</item>
        <item name="id">9</item><item name="title">Spider</item>
        <item name="id">10</item><item name="title">166</item>
        <item name="id">11</item><item name="title">Gt</item>
        <item name="id">12</item><item name="title">Crosswagon</item>
        <item name="id">13</item><item name="title">Brera</item>
        <item name="id">14</item><item name="title">90</item>
        <item name="id">15</item><item name="title">75</item>
        <item name="id">16</item><item name="title">33</item>
        <item name="id">17</item><item name="title">Giulietta</item>
        <item name="id">18</item><item name="title">Sprint</item>
        <item name="id">19</item><item name="title">Mito</item>
    </string-array>

    <array name="marcas">
        <item>@array/Abarth</item>
        <item>@array/Alfa_Romeo</item>
    </array>
</resources>

我想获取数组 marcas 的内容和子数组的名称,例如“Abarth”或“Alfa_Romeo”。

我该怎么做?在其他帖子中我已经阅读了下一个代码,但它是为了获取整个数组,而不仅仅是数组的一部分。

Resources res = getResources();
        TypedArray ta = res.obtainTypedArray(R.array.marcas);
        int n = ta.length();
        String[][] car = new String[n][];
        for (int i = 0; i < n; ++i) {
            int id = ta.getResourceId(i, 0);
            if (id > 0) {
                car[i] = res.getStringArray(id);
            } else {
                // Error en el XML
            }
        }

谢谢。

【问题讨论】:

  • 检查我的答案。我希望我正确理解了问题。

标签: android arrays resources


【解决方案1】:

我想获取数组marcas的内容和名称 子数组,例如“Abarth”或“Alfa_Romeo”。

我不知道我是否正确理解了您的问题,但要获取数组的名称,您可以使用:

TypedArray parent = getResources().obtainTypedArray(R.array.marcas);
List<String> childs = new ArrayList<String>();
for (int i = 0; i < parent.length(); i++) {
   int id = parent.getResourceId(i, 0);

   if (id > 0) {
      childs.add(getResources().getResourceEntryName(id));
   }
}

parent.recycle();

输出:

Abarth
Alfa_Romeo

【讨论】:

  • 谢谢,这是最好的解决方案。请再问一个问题。如果我触摸微调器中的一个元素,例如“Abarth”,我如何才能仅获取数组 R.array.marcas 中该元素的值?
  • @Victor_J_Martin 你的意思是数组 Abarth 中的项目?顺便说一句,如果有效,请接受答案以查看它是否有效(对于其他人),谢谢。
  • 如果我现在需要其中一些元素的值,例如 的“Abarth”,我怎样才能获得它的元素?
  • 您的意思是包含数组 Abarth 的项目?
  • 对不起,我指的是“”中的“Abarth”元素。抱歉,我搞错了。
【解决方案2】:

您已经做好了一切,要获取 TypedArray 资源名称,您需要使用getResourceEntryName。添加以下代码以获取resourceEntryName,以获取您要查找的内容。

getResources().getResourceEntryName(id);

这将为您提供输出“Abarth”和“Alfa_Romeo”。

【讨论】:

  • 这是我的答案^^。我想获得像“”这样的数组名称,以便稍后在列表中介绍。
  • @Yup 您的解决方案有什么新功能?正确检查问题。
  • 是的,当我有“Abarth”和“Alfa_Romeo”时,它显示为空
猜你喜欢
  • 2021-07-01
  • 2020-02-15
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多