我正在寻找一种解决方法来替换SQLite表内容的字符串资源(strings.xml)。表的内容正在发生变化,synchronized
表示在线数据库。因此,当我修改服务器上的某些文本时,应该在应用程序中更改它们,同时运行。
我不想用实际的方式设置每个textview和其他文本,或者创建自定义textview等。
是否可以从该数据库表生成xml并将其用作字符串资源? (在运行时当然,生成的xml与原始xml完全相同,除了字符串值,因此键不会改变) 或者有人有想法解决这个问题吗?
答案 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访问速度很慢,请记住这一点。
希望这有帮助。