Firebase все изображения не хранятся - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь сохранить изображения для хранения в базе данных Glide, но сохраняется только последнее изображение.

    for (i = 0; i < imageFileList.size(); i++) {
        StorageRef = mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");
        Glide.with(this).asBitmap().load(imageFileList.get(i).getAbsolutePath()).into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                stream = new ByteArrayOutputStream();
                resource.compress(Bitmap.CompressFormat.JPEG, 20, stream);
                byte[] byteArray = stream.toByteArray();
                StorageRef.putBytes(byteArray);
            }
            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });
    }

1 Ответ

0 голосов
/ 21 февраля 2020

Я могу только предположить, что StorageRef является членом класса, так как вы не показываете, где он испорчен. Если это так, ваш l oop перезаписывает StorageRef при каждом взаимодействии, и только последнее значение останется после завершения l oop. Поскольку Glide является асинхронным, все обратные вызовы произойдут после завершения l oop, и все они будут использовать последнее значение StorageRef.

Вместо этого вы должны сделать StorageRef конечной локальной переменной, чтобы она не перезаписывалась каждый раз через l oop:

final StorageReference StorageRef =
    mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...