簡體   English   中英

在Android中保存arraylist的Hashmap

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM