我创建了一个列表,将共享首选项显示为字符串。我像这样创造它......
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems);
setListAdapter(adapter);
if (sharedpreferences.contains(Name0)) {
String prefs = sharedpreferences.getString(Name0, "");
listItems.add(prefs);
}
以及其他偏好。我试图找出如何删除列表项,以及共享首选项以及它。我无法弄清楚我是否应该使用onClick监听器,或列表中的删除按钮或我可能还没读过的其他方法。我想让用户非常简单直观。
所以我的问题是,如何编辑现有代码以删除列表项及其显示的首选项。谢谢你的帮助。
答案 0 :(得分:1)
这是我最终在周末搞清楚的,它需要一个共享首选项,它有两个以逗号分隔的值。防爆。 (Wifiname_SSID,John的Wifi)。然后它会拆分共享首选项值,并检查共享首选项值是否与列表中存储的字符串匹配。如果共享首选项和单击的列表项匹配,则删除该项。
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems);
lv = (ListView) findViewById(android.R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
AlertDialog.Builder adb = new AlertDialog.Builder(
NicknamePrefs.this);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to delete \n"
+ adapter.getItem(position));
final int positionToRemove = position;
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String item = adapter.getItem(positionToRemove);
List<String> items = Arrays.asList(item
.split("\\s*,\\s*"));
adapter.remove(adapter.getItem(positionToRemove));
String prefs1 = sharedpreferences.getString(Name0, "");
List<String> items1 = Arrays.asList(prefs1
.split("\\s*,\\s*"));
if (item.contains(items1.get(0))
|| item.contains(items1.get(1))) {
sharedpreferences.edit().remove(Name0).apply();
}
adapter.notifyDataSetChanged();
}
});
adb.show();
}
});