我有一个包含大量行的表,应该进行翻译。大多数值都是整数,因此不需要翻译值。
但是我的数据来自JSON结构,其中数据在键值对中正常存储。 E.g:
{
"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的字段列表放在一起。但我认为这段代码效率不高。我怎么能写得更好?
答案 0 :(得分:0)
听起来确实有点复杂。为什么不在字典中包含所有可能的翻译键/翻译方式 大多数翻译框架都是这样的。