-1

我的代码只是使用按钮单击删除第一个文件,但如果此语句为真 if(CheckArr[i] == true),我想使用 for 循环删除和取消隐藏所有图像但我的代码只执行第一个索引文件而不是所有检查的文件只删除第一个是删除我该怎么办?如何删除和复制所有选中的项目?我如何自定义我的 for 循环?

    unhide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

for (int i = 0; i < CheckArr.length; i++) {
if (CheckArr[i] == true) {

db = new DataBase(getBaseContext());
    try {
    db.createDataBase();

      } catch (IOException e1) {

    e1.printStackTrace();
    }
  Cursor DataC = db .selectQuery("SELECT path FROM Photos where name ='"+ 
  currentFiles[i].getName() + "'");



Bitmap bitmap = decodeFile.decodeFile(new File(root + "/"+ currentFiles[i].getName()));

try {       
 FileOutputStream outputStream = new FileOutputStream(new 
 File(DataC.getString(DataC.getColumnIndex("path"))));

    outputStream.write(decodeFile.getBitmapAsByteArray(bitmap));
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}

File file = new File(root + "/" + currentFiles[i].getName());
file.delete();

inflateListView(currentFiles);


DataC.close();
   db.close();
}
}
4

1 回答 1

0

我会以不同的方式做我的循环。我只打开一次数据库,然后检查中间步骤是否有效。

这是我更推荐的:

  unhide.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            try {
                db.createDataBase();
                for (int i = 0; i < CheckArr.length; i++) {
                    if (CheckArr[i] == true) {
                        db = new DataBase(getBaseContext());
                        Cursor dataC = db.selectQuery("SELECT path FROM Photos where name ='"+
                                currentFiles[i].getName() + "'");
                        Bitmap bitmap = decodeFile.decodeFile(new File(root + "/"+ currentFiles[i].getName()));
                        if (dataC.moveToFirst() && bitmap != null) {
                            FileOutputStream outputStream = new FileOutputStream(new
                                    File(dataC.getString(dataC.getColumnIndex("path"))));

                            outputStream.write(decodeFile.getBitmapAsByteArray(bitmap));
                            outputStream.close();

                            File file = new File(root + "/" + currentFiles[i].getName());
                            file.delete();
                        } else {
                            if (bitmap == null) {
                                Log.v("YOUR TAG", "bitmap not found");
                            } else {}
                            Log.v("YOUR TAG", "unable to convert file");
                        }
                        dataC.close();
                    }
                }
                db.close();

                inflateListView(currentFiles);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }

我不确定你在某些事情上做了什么,但这就是我要走的方向。

于 2013-05-03T05:40:52.137 回答