我觉得这不应该是一个复杂的问题,但我已经尝试过重新设计它,并且无法想出解决它为什么不起作用的解决方案。
我有一个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);
答案 0 :(得分:0)
实际上这是一个简单的错误,而不是将String值传递给notesSet.remov(),而是将整数值传递给它。
所以像这样改变
notesSet.remove(i)
到
notesSet.remove(notes(i))