Android 从gridview中删除项

Android 从gridview中删除项,android,image,gridview,gallery,delete-file,Android,Image,Gridview,Gallery,Delete File,我知道这里有很多关于如何删除项目的答案,但我不能让它工作。它显示错误。你能看看吗?我在AdapterRemovePosition中添加了,但我认为它工作不正确。 所以我想在使用onItemLongClickListener后删除文件及其缩略图 主要内容: }我猜它的堆栈溢出了。适配器中的remove方法永远是递归的。 不要删除文件,而是要求内容解析器将其删除。以及重新加载数据。 您不必在单击列表中再次调用grid.setAdapter缩略图,请检查此行: file.delete();

我知道这里有很多关于如何删除项目的答案,但我不能让它工作。它显示错误。你能看看吗?我在AdapterRemovePosition中添加了,但我认为它工作不正确。 所以我想在使用onItemLongClickListener后删除文件及其缩略图

主要内容:


}我猜它的堆栈溢出了。适配器中的remove方法永远是递归的。 不要删除文件,而是要求内容解析器将其删除。以及重新加载数据。
您不必在单击列表中再次调用grid.setAdapter缩略图,请检查此行:

file.delete();
             thumbnails.remove(position);

您首先删除文件,然后将其从适配器中删除。应该是相反的。重置适配器,然后删除实际文件。您的缩略图在仍连接到适配器时被删除。

启动应用程序后,当我仅设置onlongitemclicklistener时,您会遇到什么错误;s显示错误嘿,我在你的页面上看到你是android开发者。你能帮我做一个节目吗?我有一个程序,可以用MediaStore.Images.Media搜索所有图像,并在GridView中显示它们的缩略图。但我需要显示包含这些图像的文件夹,并在gridview中显示它们。点击后,他们应该给我看图片。你能帮我重新制作我的项目吗?不要做那个MediaStore。图片??这将导致内存很快耗尽,而不是使用通用图像加载工具lazyloading for gridview;t结果为outofmemory,因为在gridview中我显示的是thumbnailsnot图像。它工作正常。只有第一次下水是太久了。那么,你能像我说的那样帮我制作一个画廊吗??带文件夹
public class ThumbnailAdapter extends BaseAdapter {

// Context required for performing queries
private final Context mContext;

// Cursor for thumbnails
private final Cursor cursor;
private final int imgId;
private final int imgData;
private final int count;

public ThumbnailAdapter(Context c) {
    this.mContext = c;

    // Get list of all images, sorted by last taken first
    final String[] projection = {
            MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA
    };
    cursor = mContext.getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            projection,
            null,
            null,
            MediaStore.Images.Media.DATE_TAKEN + " DESC"
    );
    imgId = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
    imgData = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    count = cursor.getCount();
    Log.d("ThumbnailAdapter", count + " images found");
}
@Override
public int getCount() {
    return count;
}
@Override
public Object getItem(int position) {
    return position;
}
@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {  // if it's not recycled, initialize some attributes
        imageView = new ImageView(mContext);
    } else {
        imageView = (ImageView) convertView;
    }
    cursor.moveToPosition(position);
    final Bitmap thumbnail = MediaStore.Images.Thumbnails.getThumbnail(
            mContext.getContentResolver(),
            cursor.getInt(imgId), 
            MediaStore.Images.Thumbnails.MICRO_KIND,
            null
    );
    imageView.setImageBitmap(thumbnail);
    Log.d("ThumbnailAdapter", "render: " + cursor.getString(imgData));
    return imageView;

}

public String getImagePath(int position) {
    cursor.moveToPosition(position);
    return cursor.getString(imgData);
}
public void remove(int position) {
    remove(position);
    notifyDataSetChanged();

}
file.delete();
             thumbnails.remove(position);