Не отображается загруженная картинка в Recycler через Picasso

95
06 июня 2021, 12:50

Есть такой главный экран

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

public void savePhotoFromInternet(String url, String idImage) {
        Picasso.get()
                .load(url)
                .into(new Target() {
                    @Override
                    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                        imageCache.savePhoto(bitmap, idImage);
                        Log.d("Log", "МАПИМ");
                    }
                    @Override
                    public void onBitmapFailed(Exception e, Drawable errorDrawable) {
                        e.printStackTrace();
                        Log.d(TAG, "onBitmapFailed: ОШИБКА" + getClass().getSimpleName());
                    }
                    @Override
                    public void onPrepareLoad(Drawable placeHolderDrawable) {
                        Log.d(TAG, "onPrepareLoad: Готовимся");
                    }
                });
    }

Более детально к методу imageCache.savePhoto(bitmap, idImage);

public void savePhoto(Bitmap bitmap, String idImage) {
        Log.d(TAG, "saveImage: сохранение image в хранилище телефона в папке " + APP_FOLDER + " под именем " + idImage);
        getImageDir().mkdirs();
        File imageFile = new File(getImageDir(), idImage + ".png");

        if (!getImageDir().exists() && !getImageDir().mkdirs()) {
            throw new RuntimeException("fail");
        }
        try {
            //Открываем поток для записи файла
            FileOutputStream fos = new FileOutputStream(imageFile);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

И в чем заключается беда, 1 к 10 из картинок может "сохраниться" во так (на примере 2 плохо загруженные картинки)

Когда такое происходит в логах видно что он запускает метод "onPrepareLoad" в savePhotoFromInternet > .into(new Target() после этого никаких телодвижений.... , что может быть не так?

READ ALSO
Как вернуть код в начало и запустить?

Как вернуть код в начало и запустить?

Есть код через который можно выполнить вход прописав необходимый логин и пароль, если ты ввел логин неправильно то программа пишет "Error"

370
React input обновление последней буквы Есть ли изящное решение

React input обновление последней буквы Есть ли изящное решение

Есть React контрол с тегом input и дочерний контрол обрабатывающий введенное значение

99
Не выходит проверка на наличие в json нужного мне значения

Не выходит проверка на наличие в json нужного мне значения

Вот собственно сам код(я ещё новичок в js)

94