从字符串数组中获取属性名称

Get attribute name from string array

我有如下所示的字符串数组:

<string-array name="USA">
    <item name="NY">001</item>
    <item name="LA">002</item>
    <item name="WA">003</item>
</string-array>

我可以通过以下方式获得这些数字:

Resources res = getResources();
int arryid = res.getIdentifier("USA", "array", getPackageName());
String[] numbers = res.getStringArray(arryid);

但是我怎样才能同时获得名称 (NY,LA,WA)? 请注意,我有很多县...也许使用不同的方法?

String[] numbers = getResources().getStringArray(R.array.USA);

使用数组获取数据。

numbers[id]

像这样添加数组。

<string-array name="USA">
    <item>NY</item>
    <item>LA</item>
    <item>WA</item>
</string-array>

因为“001”只是索引,为什么不简单地使用它呢?

<string-array name="USA">
    <item>NY</item>
    <item>LA</item>
</string-array>

然后就用index + 1作为位置:

String[] usaStates = getResources().getStringArray(R.array.USA);

int index = 0;

String firstStateName = usaStates[index];
int firstStatePosition = (index + 1);

除此之外,您可以使用两个数组并将它们合并为一个 HashMap:

<string-array name="USA">
    <item>NY</item>
    <item>LA</item>
</string-array>

<string-array name="USA_pos">
    <item>001</item>
    <item>002</item>
</string-array>

String[] usaStates = getResources().getStringArray(R.array.USA);
String[] usaStatePositions = getResources().getStringArray(R.array.USA_pos);

Map <String, String> map = new HashMap<>(usaStates.length);

for (int i = 0; i < usaStates.length; i++) {
    map.put(usaStates[i], usaStatePositions[i]);
}

documentation<item> 没有 name 属性。

所以我认为没有任何方法可以获得这些密钥。

但是,如果您想获取 stringstring-array 的名称,您可以通过编程方式获取它,但不能获取 <item>.