【问题标题】:how to use shared preferences to save array list items?如何使用共享首选项来保存数组列表项?
【发布时间】:2016-08-09 08:15:24
【问题描述】:

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

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

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

【问题讨论】:

  • 我使用 for 循环将列表保存到共享首选项,其中键作为列表中的索引号。我不能从我的手机编码,虽然它应该很容易搜索。类似于 put.String(i, mList.get(i));

标签: java android arrays list


【解决方案1】:

以下内容:

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

享受编码......

【讨论】:

    【解决方案2】:

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

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

    您甚至可以保存对象:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-26
      • 2022-01-15
      • 2014-05-07
      • 1970-01-01
      • 2018-08-09
      • 2021-08-16
      • 2018-04-15
      • 2012-08-22
      相关资源
      最近更新 更多