2013-10-01 27 views
1

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

当前的代码是提前

回答

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); 

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

+0

哇,谢谢。这是个好主意..感谢很多 –

+0

是的这是好得多,对不起我没有意识到你在讨论固定数据(尽管它在标题中):P –

1

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

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

+0

好的,谢谢您的建议。 ;) –

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

+0

它将在该HashMap中有大约50个或更多的数据,并且我使用Integer键,因为我会选择一个随机整数的数据,这就是为什么我使用K,V。 –

相关问题