2013-04-17 128 views
1

我想从gridview中简单地删除图像。之前我遇到了麻烦,没有任何删除,但现在这不是问题,因为我确定我只需要正确的文件路径。图像保存在我的SD卡上,所以我需要帮助的代码才能正确识别已被点击的图像的正确文件路径,并在点击删除按钮时将其删除。我究竟做错了什么?没有错误被抛出,我的清单在所有权限上都是最新的。我认为这会比原来简单得多。以下是我的代码:从Gridview中删除图像

deletebutton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    int id = viewIt.getId(); 
    Log.i("start", "BEGIN_DELETE"); 
    String myPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/My Directory/"; 
    File file= new File(myPath + intent.getData()); 

if(file.exists()){ 
    file.delete(); 
} 
    Log.i("end", "END_DELETE"); 

    dialog.dismiss();                  

    } 
    }); 
+1

删除文件。如果方法或类更新并搜索文件,我会建议将该活动作为简单修补程序进行刷新,或者采取漫长的方式并实际删除网格视图上的项目。 – Akyl

+0

如果你正在显示来自sdcard的路径的图像,我会跳过该路径并引用gridview。调用适配器上的notifyDataSetChanged()来刷新gridview – Raghunandan

+0

Akyl - 我想走很长的路。刷新甚至不是问题。当我测试它时,图像仍然在电话上,因此它不会被删除。从网格中直接删除它有什么好处? – BossWalrus

回答

1

想通了!我使用了一个textview来查看返回的文件路径,然后使用它浏览,直到找到正确的文件路径。然后它就像一个魅力。以下是我的工作代码。

delete.setOnClickListener(new View.OnClickListener() { 


           @Override 
           public void onClick(View v) { 
            // TODO Auto-generated method stub 
            int id = viewIt.getId(); 
            Log.i("start", "BEGIN_DELETE"); 
             String filestring = arrPath[id]; 
             filepath.setText(filestring); 
             File myDir = new File(filestring); 
             if(myDir.exists()) 
             { 
              myDir.delete(); 
             } 
             dia.dismiss(); 
             Log.i("end", "END_DELETE"); 

           } 
          });