2011-07-04 91 views
2

是否可以在应用程序中存储列表,而不必拥有数据库? 否则,什么是最简单的方法来存储一个简单的列表?是否有可能在android上没有数据库存储?

+3

您可以随时通过创建存储数据一个文件。那有什么问题? –

+2

列表中有什么?字符串?这很容易,只需将字符串保存到文件中,然后单击任何你想要的。如果它的对象尝试序列化它们,请使用@mathiasnj和Cinquo – RMT

回答

3

我认为这取决于你正在使用的列表中的内容几个许多存储能力。如果您的列表仅存储“简单对象”(如列表中的字符串列表整数或其他对象只有少数成员),您可以使用Android中内置的SharedPrefenrences。他们需要一个关键和价值。所以,如果你的列表中包含的5个对象 - 让我们说点保持它的简单 - 你可以将它们保存像

SharedPreferences.Editor editor = getSharedPreferences("YourListName", MODE_PRIVATE).edit(); 
for(int i = 0; i < YOUR_LIST.count() ; i++){ 
    Point p = YOUR_LIST.get(i); 
    editor.putInt("Element" + i + " X", p.x); 
    editor.putInt("Element" + i + " Y", p.y); 
} 
editor.commit(); 

再次收到此你可以只说

SharedPreferences prefs = getSharedPreferences("YourListName", MODE_PRIVATE); 
Map<String, ?> map = prefs.getAll(); 
+0

好,但我应该用变量'p'做什么? – coffee

+0

哎呀,对不起,这是一个错字。我假设它是一个List of Point,所以我将它更正为p.x和p.y,因为Point Object有两个成员,int x,y。我将地图中的地图更正为以清楚表明。所以替换Point并把你自己的Object放在里面。 –

+0

好的!在这种情况下,您将不得不在Point对象中搜索关键字“Element2 X”,例如,对吗?而且,我认为'Map map = prefs.getAll()'不起作用,因为'prefs.getAll()'返回一个映射 ...我想。 – coffee

1

Java允许您使用对象的序列化,方便的API。 Here有一个来自java网页的技术文章。

+0

。看来[内部存储](http://developer.android.com/guide/topics/data/data-storage.html#filesInternal)。这是一回事吗? – coffee

+1

看起来内部存储允许写入应用程序的私有区域,如果只是您的应用程序需要它,这可能就是您可能需要的。当我指代序列化时,我的意思是让一个方法能够将特定格式的对象映射(并写入)为文件中的另一种格式(反序列化只是相反的操作)。格式可以是任何适合你的格式,在这种情况下,如果它是元素列表,则可以为每个文件行放置一个元素。你也可以评估一些喜欢pickleing(cPickle库)的东西。 – Cinquo

+0

谢谢你的回答。 – coffee

3

有几种方法Data Storage在安卓 看看开发者园地,你有你需要的任何的所有信息:

Shared Preferences 店专用的键值对原始数据。

Internal Storage 将私人数据存储在设备存储器上。

External Storage 将共享数据存储在共享外部存储上。

SQLite Databases 将结构化数据存储在专用数据库中。

Network Connection 使用您自己的网络服务器将数据存储在网络上。

如果您已经找到最适合您的需求的存储空间,请随时索要任何类型的存储空间。

+0

我有一个对象列表(不是原语),并且想要存储它们,即使我的应用程序被杀死了。所以,我想,“SQLite数据库”是最好的选择。 – coffee

+0

的确如此,我推荐一个sqlite数据库。此外,您应该考虑使用ORM的选项,如http://ormlite.com/sqlite_java_android_orm.shtml – matiasnj

3

数据库有多种持久性替代方案。仅举几例(与Java访问),你可以

  • 使用简单文件(serialisation,或其他配置格式 - 在这种情况下看看commons configuration
  • 写XML内容(使用XML序列化 - 再次 - ?!?或其他机制,如XStreamJAXB,...)
  • 使用任何的NoSQL存储(图形数据库,文档数据库,等等...)
  • 使用流行层(如space4j
  • 使用transactionnal dat商店(如JDBM

仅举从Java

+1

Space4J还提供索引,包含4种不同类型的索引。看一看:http://forum.space4j.org/posts/list/5.page – TraderJoeChicago

相关问题