Читать массив из XML-файла в Android - PullRequest
3 голосов
/ 06 февраля 2012

Мы можем прочитать строковый массив из XML-файла в Android, как упомянуто здесь . Но это может читать только простой строковый массив.

Мой вопрос заключается в том, можем ли мы читать массив, содержащий объекты другого типа. XML-файл выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array
        name="difficulty_level_names">
        <item>
            <name>IELTS</name>
            <type>1</type>
        </item>

        <item>
            <name>SAT</name>
            <type>2</type>
        </item>

        ................
        .........

    </string-array>
</resources>

ОБНОВЛЕНИЕ : Конечно, в каждом элементе может быть больше параметров.

1 Ответ

2 голосов
/ 06 февраля 2012

Нет, так, как вы предоставили. У меня на уме два решения, и оба не идеальные.

1

Вы можете создать несколько массивов, например, строковый массив для имен, целочисленный массив для целого числа и т. Д. Каждый объект будет храниться в этих массивах с одинаковым индексом. Это не просто в обслуживании, но может быть более эффективным в использовании памяти в случае доступа только к одному свойству объекта.
Я описал это в: https://stackoverflow.com/a/6774856/538169

Или

2

Вы можете создать один типизированный массив и иметь свойства объекта в массиве. Вы можете получить доступ к свойству путем перевода индекса следующим образом:

final int PROPERTIES_COUNT_IN_OBJECT = 2;
int objectIndex   = 0; // the first element in your's example
int propertyIndex = 1; // the second property: <type>1</type>
int indexInArray  = objectIndex * PROPERTIES_COUNT_IN_OBJECT + propertyIndex;

Тогда получите это свойство из TypedArray.

Второе решение гораздо хуже поддерживать. Добавление другой собственности было бы кошмаром.

...