无法在Set Counter中从ListView中成功删除项目

时间:2018-02-24 05:56:27

标签: java android

我觉得这不应该是一个复杂的问题,但我已经尝试过重新设计它,并且无法想出解决它为什么不起作用的解决方案。

我有一个listView,它为它添加了一个ArrayList注释。对于此listView,当您长按某个项目时,它会创建一个删除所单击项目的弹出窗口。我的set notesSet从sharedPreferences获取数据并将其添加到注释中,并在注释更改时进行更新。此删除由“是/否”框控制。出于某种原因,我无法从笔记中删除该项目并让listView显示更新的表单。

以下是长按的代码:

myPref.edit().putStringSet("NN", notesSet).apply();

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {

        new AlertDialog.Builder(Schedule.this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("Pop Up!")
                .setMessage("Ready to delete this task?")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                        SharedPreferences myPref = Schedule.this.getSharedPreferences("com.example.jackson.collegeplanner", Context.MODE_PRIVATE);
                        Set<String> notesSet = new HashSet<String>(myPref.getStringSet("NN", null));
                        ArrayAdapter arrayAdapter = new ArrayAdapter(Schedule.this, android.R.layout.simple_list_item_1, notes);
                        ListView listView = (ListView) findViewById(R.id.listView);
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        notesSet.remove(i);
                        notes.clear();
                        notes.addAll(notesSet);
                        myPref.edit().putStringSet("NN", notesSet).apply();
                        listView.setAdapter(arrayAdapter);
                        /*
                        notes.remove(i);
                        notesSet.addAll(notes);
                        notes.clear();
                        */
                    }
                })
                .setNegativeButton("No", null).show();
            return false;
        }
    });

我认为,实际上我已经找到了这三行代码的问题。问题是,我无法弄清楚我在做什么

notesSet.remove(i);
notes.clear();
notes.addAll(notesSet);

1 个答案:

答案 0 :(得分:0)

实际上这是一个简单的错误,而不是将String值传递给notesSet.remov(),而是将整数值传递给它。

所以像这样改变

notesSet.remove(i)

notesSet.remove(notes(i))