说我的存储空间如下:
1 - turkey
2 - chicken
3 - beef
4 - fish
如果我删除chicken
,我想将其更新为:
1 - turkey
2 - beef
3 - fish
我还需要一种方法来重新订购,所以如果我说fish
应该是第一个,我希望它更新为:
1 - fish
2 - turkey
3 - beef
这样做的最佳方式是什么?
答案 0 :(得分:2)
使用List
界面存储和检索JSON数组并操作列表:
String listToJson(List<String> list) {
JsArrayString array = (JsArrayString) JsArrayString.createArray();
for (int i = 0; i < list.size(); i++) {
array.set(i, list.get(i));
}
return new JSONArray(array).toString();
}
List<String> jsonToList(String json) {
JsArrayString jas = JsonUtils.safeEval(json);
List<String> list = new ArrayList<String>();
for (int i = 0; i < jas.length(); i++) {
list.add(jas.get(i));
}
return list;
}
void myEntryPoint() {
ArrayList myList = new ArrayList();
myList.add("cake");
myList.add("pie");
myList.add("ice cream");
Storage.getLocalStorageIfSupported().
setItem("myKey", listToJson(myList));
// ...
ArrayList otherList =
jsonToList(Storage.getLocalStorageIfSupported().
getItem("myKey"));
}
答案 1 :(得分:0)
我能想到的唯一方法是使用数组。
localstorage.list = [turkey, chicken, beef, fish];
这将为火鸡提供一个起始值0,你可以手动将索引设置为1表示火鸡,2表示鸡肉等。
要删除项目,您需要对该项目进行切片:
list.splice(1); //removes chicken
要进行随机播放,请查看this帖子,这很好地解释了它。
答案 2 :(得分:0)
使用http://rhaboo.org。它是localStorage的糖层,让你可以写下这样的内容:
var store = Rhaboo.persistent("Fridge");
if (store.fridge === undefined) //first run
store.write('fridge', ['turkey', 'chicken', 'beef', 'fish']);
for (var i=0; i<store.fridge.length; i++)
console.log(store.fridge[i]);
store.fridge.unshift(store.fridge.pop()); //fish, turkey, chicken, beef
//This is all persistent - hit reload and see them rotate
它比将整个数组放在单个localStorage条目中效率更高。对于上面的示例,rhaboo将为数组使用5个条目,并在更改内容时单独编辑它们。
BTW,我写了rhaboo。