簡體   English   中英

如何使用共享首選項保存和檢索具有相同順序的字符串數組列表

[英]How to save and retrieve an arraylist of strings with the same order, using shared preferences

我是Android的新手,我嘗試完成我的第一個android應用程序。 我有一個字符串數組列表(我已經適應了一個列表視圖),並通過按不同的按鈕添加了不同的字符串。 問題是,當應用程序關閉時,arraylist會丟失所有數據,並且我已經閱讀到sharedpreferences類可以解決此問題。我嘗試過,然后又取回了arraylist,但是順序與我之前的順序不同保存了。 那么,我如何以相同的順序檢索arraylist? 提前致謝!

如果您真的想使用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>

簡單的將arraylist保存在sharedpreferences中的方法是,將其以相同的順序轉換為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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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