配列をXMLに定義

TOP > Androidアプリ開発日誌 >  配列をXMLに定義
このエントリーをはてなブックマークに追加

 Android では、配列を定義し管理する方法として、リソースファイル(res/strings.xml)に定義する方法があります。文字列配列、整数・数値配列、カラーの配列、2次元配列などを定義する事ができます。

ソース「 /src/jp.mediawing.android.test/TestActivity.java 」

package jp.mediawing.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.Log ;
import android.graphics.Color;

public class TestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String[] array_str = getResources().getStringArray(R.array.ARRAY_STR);
        Log.d("DEBUG", "array_str[1]=" + array_str[1]) ; // 猫

        int[] array_int = getResources().getIntArray(R.array.ARRAY_INT);
        Log.d("DEBUG", "array_int[2]=" + array_int[2]) ; // 30

        TypedArray array_color = getResources().obtainTypedArray(R.array.ARRAY_COLOR);
        int color = array_color.getColor(0,0) ;

        TypedArray array_float = getResources().obtainTypedArray(R.array.ARRAY_FLOAT);
        float flt = array_float.getFloat(1,0);
        Log.d("DEBUG", "flt=" + flt) ; // 1.23
    }
}

文字列定義用リソースファイル「 /res/values/strings.xml 」

ここでは、strings.xml に記述しましたが、array.xml を新規作成してそちらに記述しても問題ありません。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Test</string>

    <string-array name="ARRAY_STR">
        <item>犬</item>
        <item>猫</item>
        <item>鳥</item>
    </string-array>

    <integer-array name="ARRAY_INT">
        <item>10</item>
        <item>20</item>
        <item>30</item>
    </integer-array>

    <array name="ARRAY_COLOR">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>

    <array name="ARRAY_FLOAT">
        <item>1.2</item>
        <item>1.23</item>
        <item>1.234</item>
        <item>1.2345</item>
    </array>

    <!--  2次元配列に -->
    <array name="ARRAY_MULTI">
        <item >@array/ARRAY_STR</item>
        <item >@array/ARRAY_INT</item>
        <item >@array/ARRAY_COLOR</item>
        <item >@array/ARRAY_FLOAT</item>
    </array>

</resources>