2

我有一个列表视图,这些视图将从共享首选项中加载。当用户单击删除时,它应该从列表和粉碎首选项中删除。我的问题是,特定项目没有从共享首选项中删除,为此我在下面的代码中使用,

SharedPreferences settings = getSharedPreferences(
OptionsActivity.PREFS_NAME, 0);
int deviceSize = settings.getInt("deviceSize", 0);
SharedPreferences.Editor editor = settings.edit();
String deviceName = items.get(index);
editor.remove(deviceName + String.valueOf(items.get(index)));
editor.remove("deviceName" + String.valueOf(index));
int deviceid = settings.getInt("deviceId"+String.valueOf(items.get(index)),0);
editor.remove("deviceId" + String.valueOf(deviceid));
editor.putInt("deviceSize", deviceSize - 1);
editor.commit();

通过此代码,只有 deviceSize-1 正在工作,因此它似乎已从列表中删除,但当我看到共享首选项文件时,它不是。我的共享首选项文件如下,

   <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
   <map>
   <string name="deviceName1">APPLE</string>//delete when click on delete
   <int name="deviceId1" value="0" /> //delete when click on delete
   <int name="deviceSize" value="1" /> //decrease by one when item deleted
   </map>

当用户单击删除时,我想删除这 3 行表单首选项文件。如何删除整行?列表仅显示名称(APPLE)。

4

2 回答 2

5

线上有错误:

editor.remove("deviceId" + String.valueOf(deviceid));

它应该是

editor.remove("deviceId" + String.valueOf(index)); 

也许您还想删除 deviceSize 键:

editor.remove("deviceSize");

在提交之前。

你的代码不是很清楚。使其更具可读性。

于 2012-11-15T07:50:51.940 回答
0

你可以试试:

settings.edit().remove("deviceId" + String.valueOf(deviceid)).apply();
于 2017-05-26T19:20:42.240 回答