【问题标题】:Get data from android string array from resource从资源中获取android字符串数组的数据
【发布时间】:2023-03-20 12:40:02
【问题描述】:

我知道如何从string-array 获取数据。我就是这样做的。

<string-array name="values">
   <item>value1</item>
   <item>value2</item>
</string-array>

String[] values = this.getResources().getStringArray(R.array.values);

但我不知道下面的类型 string-array 是否可能并且混淆从中获取值。

<string-array name="country_data">
        <item>
            <country>Afghanistan</country>
            <countryCode>93</countryCode>
            <iso2>AF</iso2>
            <iso3>AFG</iso3>
        </item>
    </string-array>

如果可能,请帮助我获取值。

【问题讨论】:

    标签: android arrays string resources


    【解决方案1】:

    不知道下面的字符串数组是否可行

    不是。

    如果您想拥有任意 XML,请使用 res/xml/ 用于您喜欢的任何 XML 结构。然后,您可以使用 getResources().getXml() 获取一个 XmlPullParser,您可以使用它来解析该 XML。

    或者,将每个&lt;item&gt; 元素的内容包装在CDATA 中,这样可以防止资源解析器将它们弄乱。然后,您从数组中检索的每个字符串都是纯 XML,您需要对其进行解析。

    或者,在 res/raw/assets/ 中使用 JSON,使用您最喜欢的 JSON 解析器(例如 Gson)。

    或者,use SQLiteAssetHelper 在您的应用中打包一个数据库,该数据库已预加载了这些数据。

    或者,使用R. Zagórski's solution,每个对象有一个&lt;string-array&gt;,对象的每个字段都有&lt;item&gt;元素。

    【讨论】:

    • 我更喜欢 XmlPullParser。
    【解决方案2】:

    xml:

    <string-array name="_name">
            <item>n11</item>
            <item>n12</item>
            <item>n13</item>
            <item>n14</item>
            <item>n15</item>
            <item>n16</item>
        </string-array>
    

    在 java 类中检索:

       String[] test;
    test = getResources().getStringArray(R.array._name); 
    

    【讨论】:

      【解决方案3】:

      当然可以。

      总结:

      1. 定义代表您的模型的 POJO
      2. 创建一个函数将数组的字符串数组从资源导入到这个 POJO 中

      请记住,您不能使用自定义 xml 条目,它们必须是 &lt;item&gt;。而且您需要预先知道它的类型。

      【讨论】:

        最近更新 更多