[英]Saving Hashmap of arraylist in Android
我正在嘗試保存arraylist的哈希表。 我正在使用自定義類MailMessage,它本身是可打包的。 如何保存哈希圖? 我將地圖保存/恢復為:
<code>
HashMap<String, ArrayList<MailMessage>> emailsMap = new HashMap<String, ArrayList<MailMessage>>();
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putSerializable("emailsMap", emailsMap);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle state) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(state);
emailsMap = (HashMap<String, ArrayList<MailMessage>>) state.getSerializable("emailsMap");
}
</code>
但是在還原實例狀態下,我得到的是空地圖。 可能是什么問題? 我正在以正確的方式保存恢復?
您可以使用共享首選項設置和獲取您的哈希圖。
/**
* This method is used to set shared preferences
* @param context Application context
* @param key shared object key
* @param value shared object value
*/
public static void setPreferences(Context context, String key, Object value) {
SharedPreferences appSharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
Editor prefsEditor = appSharedPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(value);
prefsEditor.putString(key, json);
prefsEditor.commit();
}
/**
* This method is used to get shared object
* @param context Application context
* @param key shared object key
* @return return value, for default "" asign.
*/
public static HashMap<String, ArrayList<MailMessage>> getPreferences(Context context, String key,
Class<HashMap<String, ArrayList<MailMessage>>> clazz) {
SharedPreferences appSharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
Gson gson = new Gson();
String json = appSharedPrefs.getString(key, "");
if (TextUtils.isEmpty(json)) {
return null;
}
return (HashMap<String, ArrayList<MailMessage>>) gson.fromJson(json, clazz);
}
確保在調用getPreference來獲取哈希圖時,密鑰與使用setSharedPrefence存儲對象時所使用的密鑰相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.