我使用这两种方法来保存和加载我的数组列表,我需要在每个项目动态添加到数组后保存我的数组列表。
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);
}
我的问题是:当我添加一个带按钮的新项目时,没有任何事情发生,并且数组列表已满,如何解决这个问题?
答案 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
是数组的大小
享受编码.............