如何将hashmap值保存到sharedpreference?

时间:2014-03-02 00:57:46

标签: android hashmap sharedpreferences

我有一个这样的散列图:

static final ArrayList<HashMap<String,String>> tasklist = new ArrayList<HashMap<String,String>>();

我想将hashMap arraylist的内容存储到sharedpreference

我该怎么做?此外,如何在之后检索值?

3 个答案:

答案 0 :(得分:2)

以下是我在项目中使用此类内容的方法,它可能对您有所帮助:)

以下是如何保存它们:

Set<String> set = new HashSet<String>();
SharedPreferences prefs = getApplicationContext().getSharedPreferences(
  "My Preferences", Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putStringSet("myStringSet", set);
prefsEditor.commit();

以下是如何获得它们:

Set<String> set = new HashSet<String>();
SharedPreferences prefs = getApplicationContext().getSharedPreferences(
  "My Preferences", Context.MODE_PRIVATE);
set = prefs.getStringSet("myStringSet", null);

答案 1 :(得分:0)

我认为正确的方法是将您的hashmap保存在数据库中。你可以在这里阅读sqlite http://developer.android.com/reference/android/database/sqlite/package-summary.html

答案 2 :(得分:0)

我将Java对象存储在共享首选项中,方法是使用GSON框架将它们序列化为JSON。我更喜欢JSON,因为它是人类可读的,我的应用程序在对后端服务进行HTTP调用时已经处理了JSON。我认为我没有必要创建/维护SQL Lite数据库的复杂性。

我对此有一个更有趣的用途是维护一个应用程序范围的上传队列。我的应用程序允许将视频和图像上传到后端服务器。我在共享首选项中的状态列表中跟踪它们。任何需要此数据的活动都可以从这些“队列”中读取,而不是将数据传递到整个地方。