如何通过单击listView项删除sharedPreference?

时间:2014-06-27 16:22:10

标签: android listview android-listview sharedpreferences android-adapter

我创建了一个列表,将共享首选项显示为字符串。我像这样创造它......

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监听器,或列表中的删除按钮或我可能还没读过的其他方法。我想让用户非常简单直观。

所以我的问题是,如何编辑现有代码以删除列表项及其显示的首选项。谢谢你的帮助。

1 个答案:

答案 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();
    }
});