ユーザーがアプリにアップロードする画像のグループがあります。画像パスを sqlite データベースに保存し、画像をアプリの内部ストレージに保存します。ユーザーがそれを選択して削除することを選択した場合、単一の画像を削除することができました。私の問題は、特定の画像グループをクリアすることを目的とした、すべてクリアボタンのようなものがあることです。これをループするにはどうすればよいですか?
1 に答える
0
ここでは、一度に複数のファイルを削除するための aynTask クラスを作成しました。
private class DeleteFilesAsync extends AsyncTask<String, Integer, Integer> {
ProgressDialog mProgressDialog;
ArrayList<String> fileNames = new ArrayList<String>();
public DeleteFilesAsync(ArrayList<String> fileNames) {
this.fileNames = fileNames;
}
@Override
protected void onPreExecute() {
try {
mProgressDialog = new ProgressDialog(
SavedImageListingActivity.this);
mProgressDialog.setMessage("deleting...");
mProgressDialog.show();
} catch (Exception e) {
// TODO: handle exception
}
super.onPreExecute();
}
@Override
protected Integer doInBackground(String... params) {
for (int i = 0; i < fileNames.size(); i++) {
String fileName = fileNames.get(i);
File file = new File(fileName);
if (file.exists()) {
if (file.isFile()) {
file.delete();
onProgressUpdate(i);
}
}
}
return null;
}
@Override
protected void onPostExecute(Integer result) {
try {
mProgressDialog.dismiss();
} catch (Exception e) {
// TODO: handle exception
}
// Do more here after deleting the files
super.onPostExecute(result);
}
}
それの使い方
new DeleteFilesAsync(imgFilesSelected).execute("");
imgFilesSelected
タイプはどこですかArrayList<String>
imgFilesSelected リストにすべてのファイルパスを追加します
imgFilesSelected.add("my_path_dir/filename.jpg");
imgFilesSelected.add("my_path_dir/filename2.png");
imgFilesSelected.add("my_path_dir/filename3.png"); // etc
次に、上記のように DeleteFilesAsync() クラス コンストラクターに渡します。
すべて完了。
于 2015-06-18T08:07:00.087 に答える