我是Android的新手,目前我正在开发自己的应用程序(用于学习)。 问题是,以JSON而不是SQLite的形式存储固定数据是否合适(我根本不会更新数据),我已经尝试将其存储在HashMap中,我觉得这不太好。
HashMap中的当前代码是
HashMap<Integer, String[]> data = new HashMap<Integer, String[]>();
data.put(1, new String[]{"asd", "cax", "etc", "etc"});
提前致谢
答案 0 :(得分:2)
由于您的数据看起来像一个字符串数组,因此一个想法是使用Android的内置资源系统。
您可以将数据存储在名为res/values/arrays.xml
的XML文件中,例如:
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
在您的代码中,您可以按如下方式访问数组:
Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);
您可以从以下链接中找到更多信息。
答案 1 :(得分:1)
你应该尽可能避免使用Sqlite,因为它很慢并占用大量内存。但是你说你不会更新数据......那么存储它的重点是什么?我只是假设你错过了,在这种情况下,只要你序列化它就可以正常工作。另一方面,将它转换为Json可能更容易,因为它允许您使用SharedPreferences。
答案 2 :(得分:0)
对于不会改变的预定义数据,只要数据相当简单,这样的东西就好了。但是,在您给出的示例中,您可以使用字符串数组而不是HashMap:
String[] data = new String[] {"asd", "cax", "etc", "etc"};
对于更大的预定义数据集,另一个选项是使用字符串数组资源。这也具有能够为您的字符串本地化等提供不同资源的优点。更多信息在这里: http://developer.android.com/guide/topics/resources/string-resource.html#StringArray
对于更复杂的数据(例如某些二进制数据而不仅仅是简单的字符串),您可能希望使用原始资源(通过Resources.openRawResource()访问)或资产(通过AssetManager访问):http://developer.android.com/guide/topics/resources/providing-resources.html