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();
我知道有很多这样的问题。但是,我尝试了所有方法,但没有任何帮助。
因此,我有任务列表。我将任务存储在数据库中。
这就是我在 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();