gpt4 book ai didi

android - 删除文件并从列表中删除其名称

转载 作者:行者123 更新时间:2023-11-30 00:24:20 25 4
gpt4 key购买 nike

我正在尝试从 ListView 中删除文件,我可以删除原始文件但不能从列表中删除名称,我认为这是因为我需要从数据库中删除它,问题是我没有不知道怎么做,有人可以帮忙吗?

//适配器

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

}
});

//数据删除方法

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

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

//主要 Activity

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

//获取文件名的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);
}

//这是我保存文件的地方

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


}
});

最佳答案

您应该添加删除查询以从数据库中删除数据。将您的代码更改为

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 查询中写入要删除的文件名。希望这会奏效。

关于android - 删除文件并从列表中删除其名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com