如何使用共享首选项来保存数组列表项?

时间:2016-08-09 08:15:24

标签: java android arrays list

我使用这两种方法来保存和加载我的数组列表,我需要在每个项目动态添加到数组后保存我的数组列表。

 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);
    }

我的问题是:当我添加一个带按钮的新项目时,没有任何事情发生,并且数组列表已满,如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为您应该尝试使用TinyDB,它是SharedPreferences的一种实现,并且使用起来非常简单。

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

您甚至可以保存对象:

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

答案 1 :(得分:0)

以下内容:

全局声明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是数组的大小

享受编码.............