在sqlite中保存String和Drawable资源的正确方法?

时间:2016-07-11 07:00:52

标签: android string sqlite drawable

我有Spinner或ListView带有标志图标和货币名称(我在sqlite中保存了 R ID,例如 R.drawable.aed R.来自drawable文件夹的string.aed string.xml

然后我插入新的drawable,例如cxx.png

我的旗帜图标会移动,其中一些会随着其他图像而改变,而不是旗帜图标。如果我在手机上更新应用,就会发生这种情况如果我安装它,或删除然后安装所有工作正常。

据我所知,我的程序中的sqlite只在安装时保存 R Ids of drawables。当我添加或删除drawables或字符串时, R 会更改id数字,但在我的sqlite表中保存了旧的 R ID。

我可以尝试编写方法,每当我添加或删除新字符串和drawable时,每次都会通过增加DB_VERSION来更新sqlite中的所有 R id。 有更简单的解决方案吗?

这是我的适配器之一:

this.store.find('frameworks', includedFramework).then(function(includedFrameworkModel) {
    Ember.Logger.info(includedFrameworkModel);
});

}

2 个答案:

答案 0 :(得分:0)

要从string.xml保存String,请使用:

context.getResources().getString(R.string.value);

并保存Drawable id的用法:

String.valueOf(R.drawable.aed)

所以你的查询将是:

insertCurrency(db, CharCode.AED, 0, 1, 1, 0, 3.672950, 3.672950, context.getResources().getString(R.string.aed),String.valueOf(R.drawable.aed), 0, 1, 1);

答案 1 :(得分:0)

我找到了保存String和Drawable资源的灵活解决方案:
例如,我有 blabla.png 及其标识符 R.drawable.blabla , 然后我在sqlite中保存String blabla
在我的CursorAdapter中,我使用以下方法获取 blabla 的当前标识符:
https://stackoverflow.com/a/4428288/318460
但是使用 R.drawable.class 而不是 Drawable.class

与String资源相同。

利润 - 它允许在不更新sqlite表的情况下更改 string.xml 中的字符串文本。