我是Android新手,我嘗試完成我的第一個Android應用程序。我有一個strings列表(我已經適應了listview),我通過按不同的按鈕添加不同的字符串。問題是,當應用程序關閉時,數組列表丟失了所有的數據,並且我已經閱讀了sharedpreferences類可以解決這個問題。我試過了,我找回了數組列表,但沒有使用與當我保存它。那麼,我怎樣才能以相同的順序檢索數組列表? 在此先感謝!如何使用共享首選項保存並檢索具有相同順序的字符串數組列表
-1
A
回答
1
如果您真的對使用SharedPreferences
而不是數據庫這樣做感興趣,可以嘗試使用它們在陣列上的位置作爲首選項文件上的鍵保存字符串。
可以實現與下面的代碼片段:
private String prefName = "preferences";
/**
* Save the arraylist of Strings in a preferences file.
*/
public void saveArray(Context context, ArrayList<String> myArray) {
SharedPreferences sharedPref = context.getSharedPreferences(prefName,Context.MODE_PRIVATE);
Editor editor = sharedPref.edit();
for (int i = 0; i < myArray.size(); i++) {
editor.putString(String.valueOf(i), myArray.get(i));
}
editor.commit();
}
/**
* Reads the saved contents in order.
*/
public ArrayList<String> readArray(Context context) {
SharedPreferences sharedPref = context.getSharedPreferences(prefName,Context.MODE_PRIVATE);
Editor editor = sharedPref.edit();
int size = sharedPref.getAll().size();
ArrayList<String> ret = new ArrayList<>();
for (int i = 0; i < myArray.size(); i++) {
ret.add(i,sharedPref.getString(String.valueOf(i)));
}
return ret;
}
偏好文件應該是這個樣子:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="0">My String</string>
<string name="1">My second String</string>
</map>
1
的最簡單的方式保存在sharedpreferences ArrayList的是把它轉換成JSON和100%以相同的順序,當你得到它
String list = new Gson().toJson(your_list);
shared.putString("KEY", list).apply();
然後,將其轉換回
List<Object> list = new Gson().fromJson(jsonString, new TypeToken<ArraList<Object>>(){}.getType());
+0
謝謝,我也試過你的方法,也很好。 – dimt172z
相關問題
- 1. Android - 存儲/檢索具有共享首選項的字符串
- 2. 共享首選項字符串數組
- 3. 從具有共享首選項的字符串創建數組列表
- 4. 從ArrayList獲取字符串並保存在共享首選項
- 5. 如何將字符串集保存到共享首選項
- 6. 檢索共享首選項
- 7. 如何檢索共享首選項onCreate?
- 8. 如何使用共享首選項存儲和檢索日期?
- 9. 如何使用共享首選項保存/檢索位圖的文件路徑
- 10. 列表共享首選項
- 11. 使用共享首選項在兩個具有相同包名的應用程序之間共享數據
- 12. 將字符串的數組列表保存到共享偏好
- 13. 基本保存/檢索共享首選項
- 14. 自定義ColorDialogPreference - 保存/檢索爲共享首選項
- 15. 如何使用共享偏好來保存數組列表項?
- 16. Android編輯文本文件並將字符串保存到共享首選項
- 17. 從可檢查列表中檢索共享首選項
- 18. 保存int的共享首選項?
- 19. 使用共享首選項存儲和檢索按鈕狀態
- 20. 使用共享首選項設置並保存密碼
- 21. 從共享首選項列表中保存複選框狀態
- 22. 如何使用Android共享首選項存儲和檢索整數
- 23. 傳遞字符串以使用共享首選項列出並刪除它們
- 24. 使用共享首選項保存一組布爾值
- 25. 從asynctask檢索共享首選項值
- 26. android共享首選項檢索
- 27. 如何使用共享首選項來保存名稱
- 28. 如何使用共享首選項編輯器保存
- 29. 如何使用共享首選項保存位置Android?
- 30. 如何使用共享首選項保存警告對話框
您保存那些arraylist爲什麼?串?地圖? – ZeroOne
Sqlite是(對我來說)更容易和有組織。我知道'SharedPreferences'很容易實現,但至少看看sqlite。 –
[從共享首選項中獲取和獲取字符串數組]可能的重複(https://stackoverflow.com/questions/7965290/put-and-get-string-array-from-shared-preferences) – petey