Получить имя атрибута из массива строк

У меня есть строковый массив, который выглядит так:

<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)? Обратите внимание, что у меня много графств … Может быть, используется другой подход?

Solutions Collecting From Web of "Получить имя атрибута из массива строк"

В официальном документе нет атрибута name для <item> . Поэтому я не думаю, что будет какой-то способ получить эти ключи.

Однако, если вы хотите получить имя string или string-array , вы можете получить ее программно, но не для <item> .

Поскольку «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]); } 
 String[] numbers = getResources().getStringArray(R.array.USA); 

Для получения данных из массива.

 numbers[id] 

Добавьте массив, подобный этому.

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