【发布时间】:2016-11-10 13:16:32
【问题描述】:
我尝试从 sd 卡、特定文件夹中选择图像并成功显示在我的 gridView 中。我有一个问题。在 gridview onClickListener 我想按位置删除此图像。奇怪的情况。文件在我的文件夹中删除,但是 gridview仍然显示图像
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);
}
}
});
}
对不起,我弄错了。我在 OnClick 中添加了这一行
galleryImageUrls.remove(position);
我关闭了应用程序并再次运行,但我遇到了同样的问题。我想更新我的 gridview
【问题讨论】:
-
不,这并不奇怪……galleryImageUrls 没有改变,所以你期望什么?
-
@Selvin 我添加了这一行 galleryImageUrls.remove(position);但是当我再次运行我的应用程序时,所有图像仍然显示
-
因为您没有从 MediaStore db/contentprovider 中删除它...
-
@Selvin 我有文件管理器应用程序,我检查了我的文件夹,它是空的,但 gridview 仍然显示.. 你能告诉我解决方案吗?
-
@Selvin 谢谢我自己回答。问题解决了...
标签: android android-imageview android-gridview