簡體   English   中英

如何使用共享首選項保存數組列表項?

[英]how to use shared preferences to save array list items?

我使用這兩種方法來保存和加載數組列表,並且在將每一項動態添加到數組之后,需要保存數組列表。

 public void addItems(int howMany){
            if (howMany > 0) {
                int lastInsertedIndex = 11;
                for (int i = lastInsertedIndex + 1; i <= lastInsertedIndex + howMany; i++) {
                    mList.add("Item " + i);
                    notifyItemInserted(mList.size() - 1);
                }
                lastInsertedIndex = lastInsertedIndex + howMany;
            }
        }

和我的保存和加載方法:

public boolean saveArray() {
        SharedPreferences sp = this.getSharedPreferences(SHARED_PREFS_NAME, Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        Set<String> set = new HashSet<String>();
        set.addAll(mainListAdapter.mList);
        editor.putStringSet("list", set);
        return editor.commit();
    }

    public ArrayList<String> getArray() {
        SharedPreferences sp = context.getSharedPreferences(SHARED_PREFS_NAME, Activity.MODE_PRIVATE);
        //NOTE: if shared preference is null, the method return empty Hashset and not null
        Set<String> set = sp.getStringSet("list", new HashSet<String>());
        return new ArrayList<String>(set);
    }

我的問題是:當我添加帶有按鈕的新項目時,什么也沒發生,而數組列表已滿,該如何解決呢?

我認為您應該嘗試使用TinyDB ,它是SharedPreferences的實現,使用非常簡單。

TinyDB tinydb = new TinyDB(context);
tinydb.putList("identifier", list);

您甚至可以保存對象:

tinydb.putObject(key, object);
tinydb.putListObject(key, objectsArray);

以下內容:

全局聲明myList

ArrayList<String> myList = new ArrayList<String>();

設置值:

for (int i = 0; i < totalSize; i++) {
    PreferenceManager.getDefaultSharedPreferences(this)
                     .edit()
                     .putString("number" + i, value + "").commit();         
}

為了獲得價值:

for (int i = 0; i < totalSize; i++) {
   myList.add(PreferenceManager.getDefaultSharedPreferences(this)
                               .getString("number" + i, "0"));
}

注意: totalSize是數組的大小

享受編碼.............

暫無
暫無

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

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