2011年7月14日木曜日

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

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

XML
  1. <array name="array_parent">  
  2.     <item >@array/array_sub1</item>  
  3.     <item >@array/array_sub2</item>  
  4. </array>  
  5.   
  6. <string-array name="array_sub1" >  
  7.     <item >data1</item>  
  8.     <item >data2</item>  
  9.     <item >data3</item>  
  10. </string-array>  
  11.   
  12. <string-array name="array_sub2" >  
  13.     <item >data4</item>  
  14.     <item >data5</item>  
  15.     <item >data6</item>  
  16. </string-array>  

Java
  1. TypedArray typedArray = getResources().obtainTypedArray(R.array.array_parent);  
  2. // 配列の要素数(ここではarray_parentの子要素の数)  
  3. int length = typedArray.length();  
  4.   
  5. // 子要素の配列のリソースIDを取得(ここではarray_sub1のリソースID)  
  6. int resourceId = typedArray.getResourceId(00);  
  7.   
  8. // 配列の値を取得(ここではarray_sub1の各値)  
  9. String[] array = getResources().getStringArray(resourceId);  


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