2016-11-10 3 views
-2

私はSDカード、特定のフォルダから画像を選択し、それを私のgridViewに表示しようとしました。問題は1つあります。グリッドビューonClickListener私はこの画像をposition.strange situation.file私がしたい..私のフォルダに削除さに、GridViewまだ示す画像アンドロイドの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は

galleryImageUrls.remove(position); 

のOnClick

にこの行を追加した私は、アプリを閉じて、もう一度実行しますが、私は同じ問題を抱えています私の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(); 
    } 

} 
関連する問題