Android,用户删除项目后使用适配器刷新列表视图

Android, refresh listview with adapter after user delete item

我知道有很多这样的问题。但是,我尝试了所有方法,但没有任何帮助。

因此,我有任务列表。我将任务存储在数据库中。

这就是我在 onCreate 中的内容

 taskDbHelper = new TaskDbHelper(getApplicationContext());
 listView = (ListView) findViewById(R.id.listViewMainScreen);
 final List<Task> list = taskDbHelper.getAllTasks();
 taskListAdapter = new TaskListAdapter(this, list);
 listView.setAdapter(taskListAdapter);

如果用户想要删除其中一个任务,我为此设置了 onLongClickListener。

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
                                   int position, long id)
    {
        Task task = list.get(position);
        showEditDialog(task);
        taskListAdapter.notifyDataSetChanged();
        return true;
    }

});

在该用户看到对话框片段之后,他可以在其中确认或取消项目删除。

如果用户选择删除

taskDbHelper.deleteTask(getArguments().getString("task"));
MainScreen activity = (MainScreen) getActivity();
activity.onUpdate();

如您在 MainACtivity 中所见,我调用了方法 onUpdate

public void onUpdate()
{
    taskListAdapter = new TaskListAdapter(this, taskDbHelper.getAllTasks());
    ((TaskListAdapter)listView.getAdapter()).notifyDataSetChanged();
}

而且它不起作用。我几乎尝试了一切,但只有当我添加到 onUpdate

时它才有效
listView.setAdapter(taskListAdapter);

但是,这对我来说似乎是一个非常糟糕的解决方案。 也许我错了?如果没有,最好的方法是什么?

也从您的列表中删除该项目,并且不再启动适配器。

list.remove(task);
((TaskListAdapter)listView.getAdapter()).notifyDataSetChanged();