Android, arrays.xml で定義した配列を利用する

res/values/arrays.xml で配列を定義して、その内容を取得する方法のメモ。

TypedArray を使って実数の配列を読み出す例と、getStringArray を使って一発で文字列配列を読み出す例。

res/values/arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="weight_units_label">
        <item>@string/grams</item>
        <item>@string/kilograms</item>
        <item>@string/ounces</item>
        <item>@string/pounds</item>
    </array>
    <array name="weight_units">
        <item>1.0</item>
        <item>0.001</item>
        <item>0.03527</item>
        <item>0.0022</item>
    </array>
</resources>

読み出し側のコード

public void onCreate(Bundle savedInstanceState) {
    /* 省略 */
    Resources res = getResources();
    TypedArray ta = res.obtainTypedArray(R.array.weight_units);
    for (int i = 0; i < ta.length(); i++) {
        Log.d(TAG, "index : " + i + ", value : " + ta.getFloat(i, (float) 0.0));
    }

    unit_labels = getResources().getStringArray(R.array.weight_units_label);

    for (int i = 0; i < unit_labels.length; i++) {
        Log.d(TAG, "index : " + i + ", value : " + unit_labels[i]);
    }
    /* 省略 */
}

文字化けしているが、読み出しはちゃんとできている。

arrays.xml の内容のLogCat への出力結果

参考:More Resource Types | Android Developers

«
»