2017-08-13 1 views
1

J'essaie de supprimer des fichiers d'une vue de liste, je suis en mesure de supprimer le fichier original, mais pas de supprimer le nom de la liste, je pense que c'est parce que je dois supprimer à partir de la base de données, le problème est que je ne sais pas comment, quelqu'un pourrait-il m'aider?Supprimer un fichier et supprimer son nom d'une liste

// l'adaptateur

 listAdapter = new ArrayAdapter<String>(RecordsActivity.this, R.layout.support_simple_spinner_dropdown_item, MainActivity.listRecord); 
    recordList.setAdapter(listAdapter); 

// suppression du fichier (qui va bien, le nom n'est pas supprimé de la base de données que je suppose)

 delete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      try { 
       datadelete(filePath); 
       listAdapter.remove(recordToPlay); 
       listAdapter.notifyDataSetChanged(); 
       delete.setVisibility(View.INVISIBLE); 
       share.setVisibility(View.INVISIBLE); 
       Toast.makeText(getApplicationContext(), "File deleted successfully", Toast.LENGTH_SHORT).show(); 


      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

// La méthode dataDelete

public void dataDelete(String inputPath) throws FileNotFoundException { 
    try { 
     // delete the original file 
     new File(inputPath).delete(); 

    } catch (Exception e) { 
     Log.e("tag", e.getMessage()); 
    } 
} 

// Activité principale

  File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "/Recordings"); 
     directory.mkdirs(); 

     //outPutFile = Environment.getExternalStorageDirectory().toString() + "/recording.3gp"; 
     String dateTime = new SimpleDateFormat("dd.MM.yyyy hh-mm-ss aa", Locale.getDefault()).format(new Date()); 
     //Date date = new Date(); 
     //String dateTime = DateFormat.getDateTimeInstance().format(date); 
     outPutFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recordings/"+dateTime +".m4a"; 

     final String DIR_DATABASE = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recordings"; 
     String sqliteQuery = "CREATE TABLE IF NOT EXISTS Recordings (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , fileName VARCHAR)"; 
     database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "db.sqlite", null); 
     database.execSQL(sqliteQuery); 

     getNames(); 

// La méthode getNames pour récupérer les noms des fichiers

public static void getNames(){ 
    Cursor cursor = database.rawQuery("SELECT fileName FROM Recordings", null); 
    ArrayList<String> fileNames = new ArrayList<>(); 
    while (cursor.moveToNext()) { 

     String fileName = cursor.getString(0); 
     fileNames.add(fileName); 
    } 
    cursor.close(); 
    database.close(); 

    listRecord.addAll(fileNames); 
} 

// Et voici où j'enregistrer les fichiers

  stop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       mediaRecorder.stop(); 
       mediaRecorder.release(); 
       mediaRecorder = null; 
       stop.setEnabled(false); 
       pauseBtn.setEnabled(false); 

       SQLiteDatabase database = SQLiteDatabase.openDatabase(DIR_DATABASE + "db.sqlite", null, 0); 
       values = new ContentValues(); 
       values.put("fileName", outPutFile.substring(31)); 
       database.insert("Recordings", "", values); 


       Toast.makeText(getApplicationContext(), "Audio recorded", Toast.LENGTH_LONG).show(); 

       Activity mActivity = MainActivity.this; 
       restartActivity(mActivity); 


      } 
     }); 

Répondre

1

Vous devez ajouter une requête de suppression pour supprimer des données de la base de données. Changez votre code en

delete.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     try { 
      datadelete(filePath); 
      database = this.getWritableDatabase(); 
      database.execSQL("DELETE FROM Recordings WHERE fileName = '"+your file name Here+"'"); 
      database.close(); 
      listAdapter.remove(recordToPlay); 
      listAdapter.notifyDataSetChanged(); 

      delete.setVisibility(View.INVISIBLE); 
      share.setVisibility(View.INVISIBLE); 
      Toast.makeText(getApplicationContext(), "File deleted successfully", Toast.LENGTH_SHORT).show(); 


     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

    } 
}); 

Vous devez écrire le nom de fichier que vous souhaitez supprimer dans la requête sqlite. J'espère que cela fonctionnera.