Как добавить список изображений в Firebase? - PullRequest
3 голосов
/ 11 марта 2020

Я хочу загрузить список изображений в Firebase, но в FireBase слушатель не удастся добавить список изображений в OnSuccessListener.

Попытка добавить строковое значение вне класса add onSuccessListener это работает, и я попытался Записать URL-адрес, он тоже работает. Но он не добавляет строковое значение в arrayList в OnSuccessListener. Спасибо за помощь.

Основной код

 public void UploadImage() {
    if (isUserSelected != null) {
        progressDialog.setTitle("Image is Uploading...");
        Log.d(TAG, "UploadImage: uploading");
        progressDialog.show();
        Log.d(TAG, "UploadImage:  after progress bar");
        for (int i = 0; i < multipleFileUploads.size(); i++) {
            Log.d(TAG, "UploadImage: " + i);
            final StorageReference storageReference2 = storageReference.child(System.currentTimeMillis() + "." + GetFileExtension(multipleFileUploads.get(i)));
            storageReference2.putFile(multipleFileUploads.get(i))
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Log.d(TAG, "onSuccess: ");
                            progressDialog.dismiss();
                            Toast.makeText(getApplicationContext(), "Image Uploaded Successfully ", Toast.LENGTH_LONG).show();
                            storageReference2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    Log.d(TAG, "onSuccess: uri " + uri.toString());
                                    imagelist.add(uri.toString());

                                }
                            });
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d(TAG, "onFailure: " + e.getMessage());
                }
            }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                    Log.d(TAG, "onProgress: " + taskSnapshot.getBytesTransferred());
                    Log.d(TAG, "onProgress: " + taskSnapshot.getTotalByteCount());
                }
            }).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    Log.d(TAG, "onComplete: " + task.getException());
                }
            });
        }
        imageList.add("custom list");
        uploadinfo imageUploadInfo = new uploadinfo(txtdata.getText().toString(), txtData1.getText().toString(), imageList.toString());
        String ImageUploadId = databaseReference.push().getKey();
        databaseReference.child(ImageUploadId).setValue(imageUploadInfo);


    } else {
        Toast.makeText(uploadimg1.this, "Please Select Image or Add Image Name", Toast.LENGTH_LONG).show();

    }

Код POJO для Firebase

public class uploadinfo {
public String imageName;
public String imageName1;
public String imageListString;

public uploadinfo(String imageName, String imageName1, String imageListString) {
    this.imageName = imageName;
    this.imageName1 = imageName1;
    this.imageListString = imageListString;
}

public String getImageName() {
    return imageName;
}

public void setImageName(String imageName) {
    this.imageName = imageName;
}

public String getImageName1() {
    return imageName1;
}

public void setImageName1(String imageName1) {
    this.imageName1 = imageName1;
}

public String getImageListString() {
    return imageListString;
}

public void setImageListString(String imageListString) {
    this.imageListString = imageListString;
    }
}

В пожарной базе enter image description here

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вы можете попробовать этот метод

 UploadTask uploadTask = storageReference2.putFile(multipleFileUploads.get(i));   
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
        @Override
        public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
            if (!task.isSuccessful()) {
                throw task.getException();
            }

            // Continue with the task to get the download URL
            return ref.getDownloadUrl();
        }
    }).addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
            if (task.isSuccessful()) {
                Uri downloadUri = task.getResult();
                imagelist.add(downloadUri.toString());
            } else {
                // Handle failures
                // ...
            }
        }
    });
0 голосов
/ 11 марта 2020

Возможно, проблема в вашей модели. В FireBase порядок идет imageListString, imageName, imageName1. Но в модели в конструкторе вы получили String imageName, String imageName1, String imageListString. В то же время я не уверен, как создать список, который вы создаете ДО отправки его в Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...