0

In my app, information like file names are stored in the externally storage. They are then implemented into the app with the help of ListView. I can delete files individually with OnItemLongClickListener() but I want to select multiple files in ListView and then click a Delete button. How can I do this? My MainActivity file is below:

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;
        }
    });
}
}

I deleted the extra code. Thanx for helping!

PS - I heard that in Android 4.4 + files can't be deleted like this. What should I do?

EDIT -
I have seen those answers. But I want to create a button on whose click the check/uncheck buttons would be available. How can I do that? I want the Check/Uncheck buttons to be visible only when I click delete button. Also the other answers are a bit confusing.

1

2 Answers 2

0

I would have a button with a edit or delete icon and have it change the ListView to one with checkboxes in each view. Either make a new ListView with a new Adapter or just tell adapter and set a boolean in it, and then dataSetChange the Adapter.

Sign up to request clarification or add additional context in comments.

Comments

0

I fixed my problem. I use a SparseBooleanAdapter to register the delete options.Then I press delete button to delete them.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.