【问题标题】:Add a Multiple-Delete option in ListView Android在 ListView Android 中添加多重删除选项
【发布时间】:2015-08-15 21:28:50
【问题描述】:

在我的应用程序中,文件名等信息存储在外部存储中。然后在 ListView 的帮助下将它们实现到应用程序中。我可以使用 OnItemLongClickListener() 单独删除文件,但我想在 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+的文件不能这样删除。我应该怎么办?

编辑 -
我已经看到了那些答案。但是我想创建一个按钮,单击该按钮可以使用选中/取消选中按钮。我怎样才能做到这一点?我希望只有在单击删除按钮时才能看到选中/取消选中按钮。其他答案也有点混乱。

【问题讨论】:

标签: android listview delete-file


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我解决了我的问题。我使用 SparseBooleanAdapter 注册删除选项。然后按删除按钮删除它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      相关资源
      最近更新 更多