Обновление эскиза изображения в галерее

Для моего приложения мне нужно обновить эскиз галереи.

Потому что всякий раз, когда я обновляю содержимое своего изображения, это не отражается на миниатюре. Миниатюра показывает данные о первом создании изображения, а не настоящее.

Но фактическое изображение содержит новые данные, поэтому мне также нужно отразить их в миниатюре. Побродив по этому форуму, я нашел следующий фрагмент кода для удаления текущей миниатюры, но я не могу вызвать эту функцию, потому что не могу получить photoId.

private static void removeThumbnails(ContentResolver contentResolver, long photoId) {
       Cursor thumbnails = contentResolver.query(Thumbnails.EXTERNAL_CONTENT_URI, null,           Thumbnails.IMAGE_ID + "=?", new String[]{String.valueOf(photoId)}, null);
       for (thumbnails.moveToFirst(); !thumbnails.isAfterLast(); thumbnails.moveToNext())    {
          long thumbnailId = thumbnails.getLong(thumbnails.getColumnIndex(Thumbnails._ID));
          String path = thumbnails.getString(thumbnails.getColumnIndex(Thumbnails.DATA));
          File file = new File(path);
          if (file.delete()) {
                 contentResolver.delete(Thumbnails.EXTERNAL_CONTENT_URI, Thumbnails._ID + "=?", new String[]{String.valueOf(thumbnailId)});
       }
}

В настоящее время я вызывал эту функцию как

removeThumbnails(pexelMimics.getContentResolver(),
            ContentUris.parseId(uri));

Я думаю, что этот трюк будет работать для меня. Но это мое предположение. Если у вас, ребята, есть лучшее решение этой проблемы, пожалуйста, помогите мне.


person Siddharth    schedule 17.07.2013    source источник


Ответы (2)


Во время сохранения изображения я должен предоставить следующий код для удаления содержимого изображения.

activity.getContentResolver().delete(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            MediaColumns.DATA
                    + "='"
                    + GameManager.getInstance().getSavedImageFilePath()
                            .replaceAll("'", "''") + "'", null);

После этого я получил новый контент в виде миниатюры.

person Siddharth    schedule 20.07.2013

Вы не упоминаете, какой у вас класс и наследство; если вы находитесь в классе, наследующем BaseAdapter, то вы можете сделать

notifyDataSetChanged();

после того, как вы поменяете пальцы.

person andy256    schedule 17.07.2013
comment
Я не создал вид галереи. Но я загружаю изображение на холст, а затем изменяю это изображение и сохраняю его. Итак, я получил последнее изображение, но не могу получить последнее миниатюрное изображение. - person Siddharth; 17.07.2013