2012-04-06 2 views
1

Могу ли я рассчитывать на строковые массивы в файле ресурсов "strings.xml", который будет разобран/десериализован в том же порядке каждый раз?Являются ли массивы строк «strings.xml» всегда разобранными/десериализованными в том же порядке?

Если кто-нибудь может ссылаться на любую документацию, которая четко разъясняет эту гарантию, я был бы признателен. Или, по крайней мере, предлагаем значительный опыт работы с этой темой.

Кроме того, это лучшая практика или я пропустил более простое решение?

Примечание: Это будет небольшой список, поэтому я не собираюсь реализовывать более сложную базу данных или настраиваемое XML-решение, если только мне это не нужно.

<!--KEYS (ALWAYS CORRESPONDS TO LIST BELOW ??)--> 
<string-array name="keys"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
</string-array> 

<!--VALUES (ALWAYS CORRESPONDS TO LIST ABOVE ??)--> 
<string-array name="values"> 
    <item>one</item> 
    <item>two</item> 
    <item>three</item> 
</string-array> 
+1

Вопрос трудно понять. Строковые массивы не принадлежат string.xml, а скорее values.xml. Соответствие, если таковое имеется, определяется программистом. Какую задачу вы хотите достичь? –

+0

У меня нет файла values.xml. Все мои ресурсы определены в файле «strings.xml» в папке «res/values». Это прекрасно работает. Я пытаюсь определить, могу ли я рассчитывать, что пары ключ/значение всегда выравниваются (1/один, 2/два, 3/три и т. Д.). Я не хочу строить логику вокруг этого, если десериализация узлов «item» выполняется случайным образом. – PhilaPhan80

ответ

4

Да, насколько я знаю, вы можете предположить, что порядок элементов будет таким же, каждый раз, то есть вы можете безопасно определить пар ключ/значение, используя отдельно XML объявленная массивы. Взгляните на демонстрации API (например, файл arrays.xml), и вы увидите, что Google использует тот же метод для указания статических ключей/значений. В частности, вы сможете сделать это с entries_list_preference и entryvalues_list_preference. Собственно, если вы думаете об этом: вряд ли имеет смысл предлагать атрибуты entries и entryValues для указания на статические ресурсы, например. a ListPreference, если их заказ не будет гарантирован.

Приложение: Многомерные массивы в xml не поддерживаются. Однако вы можете написать собственный XML-парсер для обработки этих случаев, что на самом деле не так сложно, как может показаться. Вероятно, вам потребуется больше времени, чем просто определение двух одномерных массивов.

+0

Спасибо! Это именно то, что я искал. – PhilaPhan80

Смежные вопросы