是否可以將整個數組(甚至是ArrayList)保存到android應用程序數據中?Android:將數組保存到應用程序數據
據我所知,你只能做像putInt,putBoolean或putString的東西.... 但是更復雜的數據類型呢? 有沒有辦法做到這一點?
或者我必須首先將整個數組轉換爲字符串,然後在加載時再次將其解析爲數組?
是否可以將整個數組(甚至是ArrayList)保存到android應用程序數據中?Android:將數組保存到應用程序數據
據我所知,你只能做像putInt,putBoolean或putString的東西.... 但是更復雜的數據類型呢? 有沒有辦法做到這一點?
或者我必須首先將整個數組轉換爲字符串,然後在加載時再次將其解析爲數組?
複雜數據類型使用
Bundle bundle = new Bundle();
bundle.putSerializable("key", object);
intent.putExtra("bundle", bundle);
編輯:或陣列,可以使用
putStringArray(key,value);
我覺得你不知道還有這樣的函數putFloatArray(key,Value),putStringArray(key,value)。你可以使用這些函數。
這是如何適用於保存應用程序數據,例如SharedPreferences? –
謝謝。我有一個ArrayList
如果 「應用程序數據」 你的意思是SharedPreferences,則沒有,你只save simple types即可。
但是,您可以在此描述通過活動onSaveInstanceState
/onRestoreInstanceState
保存應用程序狀態:Saving Android Activity state using Save Instance State
注意,這樣可以節省狀態每次活動,所以最好有下保存應用程序狀態的主要活動。
您需要實現Parcelable。你應該看看這個教程Passing ArrayList across activities
但這隻適用於當我想將對象轉移到另一個活動時,對嗎? 它不保存任何東西,是嗎? – RazorHail
對不起,我誤解了你的問題。 Parcelable對於跨活動或流程傳遞數據非常有用。 – hleroy
如果您的數組包含基元類型,請遍歷它並將其保存在SharedPreferences中。如果數組或ArrayList更復雜,則將其序列化爲base64字符串(請參閱http://stackoverflow.com/questions/134492/how-to-serialize-an-object-into-a-string)並將其另存爲字符串在SharedPreference中。如果您的ArrayList真的很大,請考慮使用其他形式的持久性存儲(寫入本地文件或使用SQLite) – hleroy
這如何適用於保存應用數據,例如SharedPreferences? –
putStringSet(String key,Set values) 在首選項編輯器中設置一組String值,以便在調用commit()時寫回。 [SharedPreferences.Editor](http://developer.android.com/reference/android/content/SharedPreferences.Editor.html) –
user370305
據我所知,這只是用sharedpreferences播放字符串的方法.. – user370305