Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 2

Поскольку "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]);
}

Ответ 3

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

чтобы получить данные из массива.

numbers[id]

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

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