如何从android资源获取一个xml文件数组?

时间:2012-09-28 22:15:41

标签: android xml resources android-resources

我将这个数组放入我的资源文件中:

<array name="xml_data">
    <item>@xml/data1</item>
    <item>@xml/data2</item>
    <item>@xml/data3</item>
    <item>@xml/data4</item>
</array>

通常,它与普通数组没有什么不同,但是在获取代码时,这不起作用......

final Resources res = getResources();
int[] xmlList = res.getIntArray(R.array.xml_data);
Log.i(TAG, "Data found: "+ xmlList.length);
for (int i = 0; i < xmlList.length; i++) {
    Log.i(TAG, "Extract xml id="+ xmlList[i].);
}

以下是logcat中获得的输出:

Data found: 4
Extract xml id=0
Extract xml id=0
Extract xml id=0
Extract xml id=0

你能帮我这个吗?

感谢。

2 个答案:

答案 0 :(得分:0)

为方便起见,我们举个例子:

我在示例xml文件中有一个简单的'string'数组(不是int)。让我们称之为array.xml

<?xml version="1.0" encoding="utf-8"?>  
<resources>
<string-array name="doing">
    <item>1</item>
    <item>2/item>
    <item>3/item>
    <item>3</item>
</string-array>
</resources>  

现在在我的Java文件中,我在我的OnCreate()函数中调用了它,它起作用了:

String[] xmlList = getResources().getStringArray(R.array.doing);
int first = Integer.parseInt(xmlList[0]);
Log.d("test", "1st string is: " + first);

P.S:我没有测试过代码,但我希望你有逻辑。祝一切顺利。希望能帮助到你。

答案 1 :(得分:0)

像这样使用你的TypedArray:

TypedArray mTypedArray = getResources().getTypedArray(R.array.xml_data);

然后,检索您的资源ID,如下所示:

int id = mTypedArray.getResourceId(position, defaultResourceId);

当我使用它时,它是一个字符串ID数组,所以我跟着它:

getString(id)