Androidアプリの開発中にリソースファイルを使用して、文字列値をキーとして使用して数字のリストを保持できるかどうかを調べようとしています。例えば
数字 (「英国」) = 999 数字 (「米国」) = 911
私が言ったように、これはJavaクラスではなくリソースファイルにある方が保守しやすいので理想的です
リソースでディクショナリを定義したい。それを直接行う方法はありません。ただし、キーと値を配列として定義してから、辞書を作成することもできます。
ではres/values/arrays.xml
、次のようなものがあります。
<string-array name="emergency_keys">
<item>UK</item>
<item>US</item>
....
</string-array>
<integer-array name="emergency_values">
<item>999</item>
<item>911</item>
...
</integer-array>
次に、コードにこのユーティリティメソッドがあり、
Map<String,Integer> getDict(int keyId, int valId) {
String[] keys = getResources().getStringArray(keyId);
int[] values = getResources().getIntArray(valid);
Map<String,Integer> dict = new HashMap<String,Integer>();
for (int i = 0, l = keys.length; i < l; i++) {
dict.put(keys[i], vals[i]);
}
return dict;
}
コードで辞書が必要な場合は、次のようにします。
Map<String,Integer> emergencyNumbers = getDict(R.array.emergency_keys, R.array.emergency_values);