2011年7月14日木曜日

AndroidのXMLで2次元配列を定義してソースから呼び出す

Androidでは文字列などのリソースをXMLで定義すると何かと便利なので、
2次元配列をXMLで定義してソースからアクセスする方法を忘れずにメモ。

XML
<array name="array_parent">
    <item >@array/array_sub1</item>
    <item >@array/array_sub2</item>
</array>

<string-array name="array_sub1" >
    <item >data1</item>
    <item >data2</item>
    <item >data3</item>
</string-array>

<string-array name="array_sub2" >
    <item >data4</item>
    <item >data5</item>
    <item >data6</item>
</string-array>

Java
TypedArray typedArray = getResources().obtainTypedArray(R.array.array_parent);
// 配列の要素数(ここではarray_parentの子要素の数)
int length = typedArray.length();

// 子要素の配列のリソースIDを取得(ここではarray_sub1のリソースID)
int resourceId = typedArray.getResourceId(0, 0);

// 配列の値を取得(ここではarray_sub1の各値)
String[] array = getResources().getStringArray(resourceId);


これに多少の応用を利かせればDrawable配列などの多次元配列も可能となる。