2 votes

comment supprimer un élément dans le stockage interne

Bonjour à tous, j'ai créé une classe qui enregistre un fichier dans le stockage interne et l'affiche dans une liste (ListView). Mais mon problème est de savoir COMMENT SUPPRIMER l'un des éléments ? voici mon code

public void onClick(View arg0) {
                // TODO Auto-generated method stub
                String fileName = edFileName.getText().toString();
                String content = edContent.getText().toString();

                FileOutputStream fos;
                try {
                    fos = openFileOutput(fileName, Context.MODE_PRIVATE);
                    fos.write(content.getBytes());
                    fos.close();

                    Toast.makeText(
                            addThis.this, 
                            fileName + " saved", 
                            Toast.LENGTH_LONG).show();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                ShowSavedFiles();

            }});
}
 void ShowSavedFiles(){
        SavedFiles = getApplicationContext().fileList();
        ArrayAdapter<String> adapter
        = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                SavedFiles);

        listSavedFiles.setAdapter(adapter);
    }

1voto

Sergey Benner Points 4089

Vous devriez probablement créer et enregistrer ( registerForContextMenu(MyListView) ) un menu contextuel dans votre activité pour votre ListView et y implémenter la suppression.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.menu, menu); //your xml menu 
    return true;
}

@Override
 public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
 super.onCreateContextMenu(menu, v, menuInfo);

     menu.add(0, v.getId(), 0, "Delete");
 }

@Override
public boolean onContextItemSelected(MenuItem item) {

       if(item.getTitle().equals("Delete")){
         TextView tv = (TextView)((RelativeLayout) ((AdapterView.AdapterContextMenuInfo)item.getMenuInfo()).targetView).getChildAt(0);
      //tv.getText(); will probably hold your filename
      //and just use the deleteFile() operations to remove it from the internal storage
       .............
       }

Lisez ce qui suit sur la façon de travailler avec le stockage interne http://developer.Android.com/guide/topics/data/data-storage.html#filesInternal

J'espère que cela vous aidera un peu

1voto

Prabuddha Points 37089

Vous pouvez supprimer les fichiers de Internal en utilisant getFilesDir().listFiles() qui vous renverra un tableau des fichiers présents dans votre dossier de fichiers.

File[] files = getFilesDir().listFiles();

for (File file : files) {
    file.delete();
}

Si vous voulez supprimer un particular vous pouvez obtenir le name de la file , compare y delete il.

if(file.getName().equals("xyz.extension"))
  file.delete();

0voto

Thor1401 Points 71

J'ai eu le même problème dans mon multichoicemodelistener. Il m'a fallu un certain temps pour supprimer plusieurs fois mes fichiers dans mon listview (sauvegardés dans le stockage interne).

Mais voici mon code pour supprimer les fichiers de stockage interne dans le multichoicemodelistener

 public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {         
       case R.id.list_context_delte:
                nr = 0;

                SparseBooleanArray sparseBooleanArray = getListView().getCheckedItemPositions();

                for(int i = sparseBooleanArray.size() -1; i >= 0; i--) {
                    if (sparseBooleanArray.get(i)) {
                   RowItem selecteditem = mAdapter.getItem(sparseBooleanArray.keyAt(i));
                   String selecteditemString = selecteditem.getFilename().toString();

                    File dir = getFilesDir();
                    File file = new File(dir, (selecteditemString));
                    file.delete();
                    mAdapter.remove(selecteditem);
                    mAdapter.notifyDataSetChanged();

                    }
                }
                    mode.finish();

        }

        return false;

    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X