2016-11-10 166 views
-2

我嘗試從SD卡,特定的文件夾中選擇圖像,並顯示它在我的gridView成功。我有一個problem.in gridview onClickListener我想刪除這個圖像的位置.strange情況。文件我的文件夾中刪除,但仍GridView的顯示圖像從Android的SD卡刪除圖像

private void fetchGalleryImages() { 
    Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
    final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_ADDED}; 
    Cursor imagecursor = getContentResolver().query(mImageUri, columns, MediaStore.Images.Media.DATA + " like ? ", new String[]{"%/Download/New Folder%"}, null); 
    galleryImageUrls = new ArrayList<>(); 
    for (int i = 0; i < imagecursor.getCount(); i++) { 
     imagecursor.moveToPosition(i); 
     int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);//get column index 
     galleryImageUrls.add(imagecursor.getString(dataColumnIndex));//get Image from column index 
     Log.e("array path", galleryImageUrls.get(i)); 
    } 
} 
private void setUpGridView() { 

    imagesAdapter = new GridView_Adapter(CustomGallery_Activity.this, galleryImageUrls, true); 
    galleryImagesGridView.setAdapter(imagesAdapter); 
    galleryImagesGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      File file = new File(galleryImageUrls.get(position)); 
      if (file.exists()) 
      { 
       file.delete(); 
       imagesAdapter = new GridView_Adapter(CustomGallery_Activity.this, galleryImageUrls, true); 
       galleryImagesGridView.setAdapter(imagesAdapter); 
      } 

     } 
    }); 
} 

對不起我misateked.I中的OnClick

加入這一行
galleryImageUrls.remove(position); 

我關閉應用程序,並再次運行,但我有同樣的問題..我想更新我的Gridview

+0

不,這是不奇怪...... galleryImageUrls是不變的有啥你的預期? – Selvin

+0

@Selvin我加了這一行galleryImageUrls.remove(position);但當我再次運行我的應用程序所有圖像仍然顯示 – BekaKK

+0

因爲你沒有將其從MediaStore db/contentprovider刪除它... – Selvin

回答

-1

這是正確的answer.I解決自己

private void setUpGridView() { 

    imagesAdapter = new GridView_Adapter(CustomGallery_Activity.this, galleryImageUrls, true); 
    galleryImagesGridView.setAdapter(imagesAdapter); 
    galleryImagesGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      File file = new File(galleryImageUrls.get(position)); 
      if (file.exists()) 
      { 
       file.delete(); 
       deleteFileFromMediaManager(galleryImageUrls.get(position)); 
       galleryImageUrls.remove(position); 
       imagesAdapter = new GridView_Adapter(CustomGallery_Activity.this, galleryImageUrls, true); 
       galleryImagesGridView.setAdapter(imagesAdapter); 
      } 

     } 
    }); 
} 

private void deleteFileFromMediaManager(String path) { 
    try { 
     MediaScannerConnection.scanFile(CustomGallery_Activity.this, new String[] { path }, 
       null, new MediaScannerConnection.OnScanCompletedListener() { 
        public void onScanCompleted(String path, Uri uri) { 
         CustomGallery_Activity.this.getContentResolver() 
           .delete(uri, null, null); 
        } 
       }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

}