如何删除ListView中的所有项目?

时间:2018-03-12 17:18:01

标签: java android

我有一张来自SD卡的ListView显示文件。我想添加一个按钮,用于删除ListView和SD卡中的所有项目。我尝试了以下内容,但删除了一个。再次单击该按钮后,它会删除另一个按钮。

Button delete = (Button) findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
          for (int i=0;i<adapter.getCount();i++){
              adapter.getItem(i);
              File ff = new File(Environment.getExternalStorageDirectory().toString() + "/TestApp/" + adapter.getItem(i));
              ff.delete();
          }

          adapter.remove(adapter.getItem(i));
          adapter.notifyDataSetChanged();
    }
}

2 个答案:

答案 0 :(得分:0)

您需要在此处清除与适配器关联的列表。然后只需在适配器上调用notifyDataSetChanged()即可。所以示例代码应如下所示。删除SD卡中的所有关联文件后,只需清除列表即可。

Button buy = (Button) findViewById(R.id.delete);
buy.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        for (int i = 0; i < yourList.size(); i++){
            File ff = new File(Environment.getExternalStorageDirectory().toString() + "/TestApp/" + yourList.get(i));
            ff.delete();
        }

        // Clear your list here
        yourList.clear();
        // And remove the following line
        // adapter.remove(adapter.getItem(i));
        adapter.notifyDataSetChanged();
    }
}

答案 1 :(得分:0)

在您的适配器中放置以下方法:

public void clearData(){
    list.clear();
    notifyDataSetChanged();
}

现在替换您的代码行:

adapter.remove(adapter.getItem(i));
adapter.notifyDataSetChanged();

到这一行:

adapter.clearData();