2012-09-19 129 views
0

重新开始之后我有整型+对象对一个HashMap,但一旦设备被关闭并上,列表不见了,我需要能够检索后的数据,否则我的HashMap是毫无意义。我试过了Bundles,用HashMap和我要加入的对象来扩展Serializable。有没有人知道如何做到这一点?我在想最好的方法是ObjectOutputStream,但我不知道如何去做。任何人都可以直接给我一个教程/例子,或者可以给我一个快速的吗?检索HashMap的设备

大加赞赏

+0

你有没有尝试过偏好? – Yahor10

回答

4

一旦设备被关闭并上,在列表中消失

名单也消失了,当你退出或重新启动应用程序。为此创建一个数据库。

See here

0

正如Samir Mangroliya所说。当您重新启动手机时,Hashmap中的所有数据都消失了。考虑使用SQLite来保存数据。我会将Integer作为Primary Key保存到数据库中的每一列。

1

您可以使用此代码将数据保存到SharedPreferances

Map<Integer, Object> aMap = new HashMap<Integer, Object>(); 
    aMap.put(String.valueOf(1), object1); 
    aMap.put(String.valueOf(2), object2); 
    aMap.put(String.valueOf(3), object3); 

    SharedPreferences keyValues = getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE); 
    SharedPreferences.Editor keyValuesEditor = keyValues.edit(); 

    for (Integer s : aMap.keySet()) { 
     keyValuesEditor.putString(String.valueOf(s), toString(aMap.get(s))); 
    } 
    keyValuesEditor.commit(); 

其中toString()方法都存放于此:How to serialize an object into a string然后重新打开应用程序调用水木清华这样的后

SharedPreferences keyValues = getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE); 
    Map<Integer, Object> map = new HashMap<Integer, Object>(); 
    for (String key : keyValues.getAll().keySet()) { 
     map.put(Integer.valueOf(key), fromString(keyValues.getString(key, null))); 
    }