我的字符串数组看起来像这样:
<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)? 请注意,我有很多县......也许使用不同的方法?
答案 0 :(得分:6)
在documentation中,name
没有<item>
属性。
所以我认为没有办法获得这些钥匙。
但是,如果您想获得string
或string-array
的名称,则可以通过编程方式获取,但不能获取<item>
。
答案 1 :(得分: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]);
}
答案 2 :(得分: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>