2013-03-28 135 views
2

我有一個ArrayList可以包含1到15個字符串。這些字符串需要保存在我的共享首選項中,現在我知道如何遍歷數組以獲取字符串。我不知道,有沒有一種乾淨的方式來動態地將字符串添加到我的共享首選項文件中?我可以通過創建15個字符串並使用if語句來填充共享首選項來緩慢執行此操作,但我想知道是否有更好的方法。從ArrayList獲取字符串並保存在共享首選項

謝謝。

+0

您是否嘗試了SharedPreferences.Editor.putStringSet()? – sandrstar 2013-03-28 09:18:11

+0

您可以使用數據庫而不是共享首選項:我認爲對您的數據進行CRUD操作會更好。 – JJ86 2013-03-28 09:19:14

+0

看到這個優秀的帖子[保存ArrayList到SharedPreferences](http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences)而不是在sharedpreferences中創建15個鍵,你也可以通過將ArrayList轉換爲JsonArray – 2013-03-28 09:24:24

回答

5

如果其有關命名,你可以使用這樣的事情:

public static final String mPrefix = "mArray"; 
SharedPreferences prefs; 
prefs = this.getSharedPreferences("PREF", 0); 
prefsEditor = appSharedPrefs.edit(); 

//mAL is your ArrayList 

for(int i=0; i<mAl.size(); i++){ 

prefsEditor.putString(mPrefix + "-" + i, mAl.get(i)); 
} 
prefsEditor.commit(); 
+0

謝謝,我不知道這是可能的。 – 2013-03-28 09:27:00

5

您可以使用SharedPreferences.Editor中的putStringSet方法來存儲字符串數組。例如:

String[] array = new String[]{"this", "is", "a", "string", "array"}; 
SharedPreferences.Editor edit = sharedPrefs.edit(); 
edit.putStringSet("myKey", new HashSet<String>(Arrays.asList(array))); 
edit.commit(); 

或者如果你的API低於11那麼你可能你的字符串數組轉換成一個字符串,並將其保存,就像一個普通的字符串。例如:

edit.putString("myKey", TextUtils.join(",", array)); 

後來使用以下方法來從字符串重建陣列:

array = TextUtils.split(sharedPrefs.getString("myKey", null), ","); 
+1

putStringSet僅在api 11之後可用。您不能在早期的android版本中使用它。 – Rahil2952 2013-03-28 09:22:33

+0

我注意到,我正在爲最低api級別8構建。但無論如何感謝。 – 2013-03-28 09:24:06

+0

查看我的更新回答 – waqaslam 2013-03-28 09:29:53

1

主要是編輯您需要的編輯對象的共享偏好數據,以便您可以自由編輯以便將數據放入其中:

SharedPrefernces preferences = mContext.getSharedPreferences(MODE_PRIVATE); 
Editor prefEditor = preferences.edit(); 
prefEditor.putString("this is a key object","this is value of the key"); 

你也可以把不同類型的對象,例如內部:布爾,整數,浮點,雙和等.... 只是仰望在Android開發者網站的編輯器類...

爲了從sharedPrefrences中讀取數據更加簡單

SharedPrefrences pref = mContext.getSharedPreferences(MODE_PRIVATE); 
pref.getString("the key of the value");