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

问题描述 投票:10回答:3

我有一个字符串数组,如下所示:

<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)?请注意,我有很多县...也许使用不同的方法?

android android-xml
3个回答
6
投票

documentation中,name没有<item>属性。

所以我认为没有办法获得这些密钥。

但是,如果你想获得stringstring-array的名字,你可以通过编程方式获得它,但不能获得<item>


4
投票

由于“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]);
}

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

从数组使用中获取数据。

numbers[id]

像这样添加数组。

<string-array name="USA">
    <item>NY</item>
    <item>LA</item>
    <item>WA</item>
</string-array>
© www.soinside.com 2019 - 2024. All rights reserved.