在我的一个应用程序表单中,我有一个从字符串数组android资源填充的微调器,因此管理转换在android应用程序中创建其他XML文件。表单数据通过API保存在mongodb中,如果相关,我也可以完全控制它们。
该应用程序将以5种语言启动(可能会在以后增长),因此我可以获得相同字符串的5个不同“版本”,但我希望应用程序在应用程序所在的语言中看到字符串(独立于它所存储的语言。
如果可能的话,我希望使用原生的Android翻译功能实现这一点,即在应用程序中发送5个XML文件,每种语言一个。 我也想让服务器代码尽可能笨。
截至目前,我只能考虑在数据库中存储索引,然后使用开关/案例循环,在应用程序视图中显示数据。我根本不喜欢这个,因为可能的选项必须是硬编码的,任何改变都意味着新的应用程序版本。
最佳做法是什么?
答案 0 :(得分:2)
根据您的评论,我了解您的实际问题是将微调器值存储在数据库中。
正如您在问题中所说,您不应该存储微调器的字符串,而是存储表示该值的整数。然后使用带有List<的微调器。整数>而不是列表<字符串>。
没有含义的int索引的替代方法是枚举:
public enum SpinnerValues {
EXAMPLE_1(R.string.example1_string),
EXAMPLE_2(R.string.example2_string),
EXAMPLE_3(R.string.example3_string);
private int mStringResId;
private SpinnerValues(int stringResourceId) {
mStringResId = stringResourceId;
}
public int getStringResId() {
return mStringResId;
}
}
在这种情况下,您的微调器数据将是List< SpinnerValue>你可以使用序数或枚举的字符串表示将你的枚举存储在数据库中(我会建议使用字符串值,以便更改枚举值的顺序不会破坏你的数据库)。