2017-08-13 29 views
1

リストビューからファイルを削除しようとしていますが、元のファイルを削除できますが、リストから名前を削除することはできません。それはデータベースから、問題はどのように誰かを助けることができるかわからないですか?ファイルを削除してリストから名前を削除する

//アダプタ(よく合い、名前は私が推測するデータベースから削除されていない)ファイルを削除

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

//

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

     } 
    }); 

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

//主な活動

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

//ファイルの名前

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

を取得するためによりgetNamesメソッド//そして私はあなたがデータを削除する削除クエリを追加する必要がありますファイル

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


      } 
     }); 

答えて

1

を保存する場所ですデータベースから。コードを

に変更する
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(); 
     } 

    } 
}); 

sqliteクエリで削除するファイル名を書き込む必要があります。これがうまくいくと思っています。

関連する問題