我有一张表,里面有很多应该翻译的行。大多数值都是整数,因此不需要翻译这些值。
但是,我的数据来自 JSON 结构,其中数据以键值对的形式正常存储。例如:
{
"age":24,
"hair-color":"black",
"weight":42,
"height":123,
// ...
}
到目前为止,我有一个如下所示的 strings.xml:
<resources>
<string name="meta_age">Alter</string>
<string name="meta_hair_color">Haarfarbe</string>
<string name="meta_weight">Gewicht</string>
<string name="meta_height">Körpergröße</string>
<!-- ... -->
</resources>
此数据在带有自定义 ArrayAdapter 的列表视图中可视化。这很好用,但是我不确定将键值对与其翻译映射的最佳方法是什么。
我现在在这里有这段代码:
public static final int[] fields = new int[] {R.string.meta_age, R.string.meta_hair_color, R.string.meta_weight, R.string.meta_height, /* ... */;
为了构建 UI,字符串需要映射到键,到目前为止,这是通过这个混乱的代码完成的:
List<Integer> fieldIndex = new ArrayList<Integer>(fields.length);
for(int i : fields) {
fieldIndex.add(i);
}
translation = new HashMap<String, Integer>();
translation.put("age", fieldIndex.indexOf(R.string.meta_age));
translation.put("hair-color", fieldIndex.indexOf(R.string.meta_hair_color));
translation.put("weight", fieldIndex.indexOf(R.string.meta_weight));
translation.put("height", fieldIndex.indexOf(R.string.meta_height));
下一步是我现在知道 json 字段的目标索引,并将它们与字符串 id 的字段列表放在一起。但我认为这段代码的性能不是很好。我怎样才能写得更好?