在 ListView 中添加多删除选项 Android

Add a Multiple-Delete option in ListView Android

在我的应用程序中,文件名等信息存储在外部存储中。然后在 ListView 的帮助下将它们实现到应用程序中。我可以使用 OnItemLongClickListener() 单独删除文件,但我想 select ListView 中的多个文件,然后单击删除按钮。我怎样才能做到这一点?我的 MainActivity 文件如下:

public class MainActivity extends AppCompatActivity {
ArrayList<FileName> filenames;
ListViewAdapter adapter;
ListView lv_filenames;
public Handler handler;
private String _path = Environment.getExternalStorageDirectory() + "/sample_directory/";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditorManager manager = new EditorManager(getApplicationContext());
    manager.CreateNewDirectory();
    lv_filenames = (ListView) findViewById(R.id.list);

    handler = new Handler();
    final Runnable r = new Runnable() {
        public void run() {
            filenames = manager.GetList();
            adapter = new ListViewAdapter(getApplicationContext(), R.layout.listView, filenames);
            lv_filenames.setAdapter(adapter);

    lv_filenames.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int file_name, long l) {
            final File deleteFile = new File(_path + filenames.get(file_name).getName());
            final String tempFileName = filenames.get(file_name).getName() + " is deleted";
            AlertDialog.Builder builder = new  AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Delete File");
            builder.setMessage("Do you really want to delete this file?");
            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    boolean deleted = deleteFile.delete();
                    if (deleted) {
                        Toast.makeText(getApplicationContext(), tempFileName, Toast.LENGTH_SHORT).show();
                    }
                }
            });
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    // Do nothing.
                }
            });
            builder.create();
            AlertDialog dialog = builder.create();
            dialog.show();
            return false;
        }
    });
}
}

我删除了多余的代码。感谢您的帮助!

PS - 我听说在Android 4.4+ 中文件不能这样删除。我应该怎么办?

编辑 -
我看过那些答案。但是我想创建一个按钮,单击它可以使用 check/uncheck 按钮。我怎样才能做到这一点?我希望 Check/Uncheck 按钮仅在单击删除按钮时可见。其他答案也有点混乱。

我会有一个带有编辑或删除图标的按钮,并让它将 ListView 更改为每个视图中带有复选框的按钮。要么用新的适配器创建一个新的 ListView,要么只告诉适配器并在其中设置一个布尔值,然后 dataSetChange 适配器。

我解决了我的问题。我使用 SparseBooleanAdapter 来注册删除 options.Then 我按删除按钮删除它们。