1

我是 Android 新手,目前我正在开发自己的应用程序(用于学习)。问题是,以 JSON 而不是 SQLite 的形式存储固定数据是否好(我根本不会更新数据),我尝试将其存储在 HashMap 中,我认为这不太好。

HashMap 中的当前代码是

HashMap<Integer, String[]> data = new HashMap<Integer, String[]>();
data.put(1, new String[]{"asd", "cax", "etc", "etc"});

提前致谢

4

3 回答 3

2

由于您的数据看起来像一个字符串数组,一个想法是使用 Android 的内置资源系统。

您可以将数据存储在名为 的 XML 文件res/values/arrays.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);

您可以从下面的链接中找到更多信息。

于 2013-10-01T00:54:53.093 回答
1

您应该尽可能避免使用 Sqlite,因为它速度慢且占用大量内存。但是你说你不会更新数据……那存储它有什么意义呢?我只是假设你说错了,在这种情况下,只要你序列化它,hashmap 就可以正常工作。另一方面,将其转换为 Json 可能更容易,因为它允许您使用 SharedPreferences。

于 2013-10-01T00:52:46.643 回答
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/指南/主题/资源/providing-resources.html

于 2013-10-01T01:06:54.073 回答