我有一个列表视图,填充了几个ListItems。我还有一个选项菜单,其中包括“删除所有项目”按钮。当我点击此按钮时,它会调用一个删除除默认值以外的所有项目的方法,并且还应该刷新ListView。 这是菜单代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
...
case R.id.optMenuDeleteAllCategories:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to delete all categories?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
**deleteAllCategories();**
}
这是deleteAllCategories()
方法:
public void deleteAllCategories()
{
manager.deleteAllCategories();
adapter.notifyDataSetChanged();
}
所以它会删除所有内容,但ListView不会刷新。我必须退出应用程序并重新打开它以查看更改。我还尝试在调用adapter.notifyDataSetChanged();
方法之后立即放置deleteAllCategories
行,但ListView仍然没有刷新。
那么如何在不退出应用程序的情况下刷新它?
答案 0 :(得分:2)
在deleteAllCategories方法中调用adapter.clear()以删除列表中的项目。
编辑:ArrayAdapter在内部将处理不同的列表实例,然后是您传入的列表实例。因此,虽然将反映对原始列表中对象的更改,但对于适配器,将无法看到对传入的ArrayList的更改。
您需要使用ArrayAdapter的add,insert,remove和clear方法来修改适配器中的列表。