从字符串数组中获取属性名称
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
属性。
所以我认为没有任何方法可以获得这些密钥。
但是,如果您想获取 string
或 string-array
的名称,您可以通过编程方式获取它,但不能获取 <item>
.
我有如下所示的字符串数组:
<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
属性。
所以我认为没有任何方法可以获得这些密钥。
但是,如果您想获取 string
或 string-array
的名称,您可以通过编程方式获取它,但不能获取 <item>
.