数据库中的Android字符串资源

时间:2014-01-20 13:05:12

标签: android localization android-resources

我正在寻找一种解决方法来替换SQLite表内容的字符串资源(strings.xml)。表的内容正在发生变化,synchronized表示在线数据库。因此,当我修改服务器上的某些文本时,应该在应用程序中更改它们,同时运行。

我不想用实际的方式设置每个textview和其他文本,或者创建自定义textview等。

是否可以从该数据库表生成xml并将其用作字符串资源? (在运行时当然,生成的xml与原始xml完全相同,除了字符串值,因此键不会改变) 或者有人有想法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

无法动态更改strings.xml文件。你可以做的是抽象字符串收集。

class YourUtilites {

    static HashMap<String, String> dbCache = new HashMap<String, String>();
    public static String getString(Context context, String key, String defaultID) {
        String value = null;

        value = dbCache.get(key);

        if (value == null) {
            // Check if the key exists in the database
            String value = db.somedbFunctionToGetString(key);
            if (value != null) {
                dbCache.put(key, value);
            }
        }

        if (value == null) {
            // If value is not in the database, resort to the default value
            value = context.getResources().getString(defaultID);
        }

        return value;
    }
}

然后你可以在像这样的文本视图中使用它

textView.setText(YourUtilities.getString("dbKey", R.id.defaultValue1, this);
textView2.setText(YourUtilities.getString("dbKey2", R.id.defaultValue2, this);
...

通过这种方式,您可以更新数据库值并立即显示。更新数据库值时,请不要忘记清除dbCache。这个解决方案显然不用说db访问速度很慢,请记住这一点。

希望这有帮助。