【问题标题】:Read array from xml file in android从android中的xml文件读取数组
【发布时间】:2012-02-27 20:21:24
【问题描述】:

我们可以像提到的here那样从android中的xml文件中读取一个字符串数组。但这只能读取简单的字符串数组。

我的问题是我们可以读取包含其他类型对象的数组吗? 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>

UPDATE:当然,每个item里面可以有更多的参数..

【问题讨论】:

  • 您可以使用 标签的属性,因为它是在您提供的示例中编写的。

标签: android android-resources


【解决方案1】:

不,按照您提供的方式。我有两个解决方案,但都不理想。

1.

您可以创建多个数组,例如用于名称的字符串数组、用于整数的整数数组等。每个对象都将存储在这些数组中的相同索引处。维护起来并不简单,但在仅从对象访问一个属性的情况下,它可能会更节省内存。
我描述在:https://stackoverflow.com/a/6774856/538169

或者

2.

您可以创建一个typed array 并在数组中包含对象的属性。您可以通过以下方式翻译索引来访问该属性:

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 中获取这个属性。

第二种解决方案更难维护。添加另一个属性将是一场噩梦。

【讨论】:

  • +1 第一个解决方案看起来很优雅,我还没有尝试过。请稍等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多