首页 > 解决方案 > 为什么列出未插入 Firebase 实时数据库

问题描述

我创建了一个应用程序,我想将一些图像存储在 Firebase 存储中,这工作正常,这些图像已上传,但我想将它们的路径保存在数据库中并且不插入这些值。

让我告诉你我做了什么:

我没有向您展示整个功能。只有指向我的问题的代码。

List<String> picturesUrls = new ArrayList<String>(); //This is declared globaly

 buttonSigningUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                uploadFile(mProfilePic,"profilePicture");
                uploadFile(mIdPhoto,"idPicture");
                uploadFile(mCriminalRecord,"criminalRecordPicture");
                final List<String> pictureUrls = picturesUrls;

                mFirebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(task.isSuccessful()) {
                            final CarrierUser carrierUser;
                            carrierUser = new CarrierUser(

                                    pictureUrls

                            );
                            FirebaseDatabase.getInstance().getReference("User")
                                    .child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(carrierUser).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if(task.isSuccessful()) {
                                        Toast.makeText(SignupCarrier.this,"Your request has been sent for approval", Toast.LENGTH_LONG).show();
                                        sendEmail(email, fullname);
                                        openLogin();

                                    }
                                }
                            });
                        }
                    }
                });



            }
        });

上传文件功能:

private void uploadFile(Uri path,String forWho) {

        if(path != null) {

            StorageReference fileReference = mStorageRef.child(editemail.getText().toString()+"-"+forWho+"-"+System.currentTimeMillis()+"."+getFileExtension(path));
            mUploadTask = fileReference.putFile(path)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                          picturesUrls.add(taskSnapshot.getUploadSessionUri().toString());
                        }
                    })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(SignupCarrier.this, e.getMessage(),Toast.LENGTH_LONG).show();
                }
            });
        }

    }

和对象:



import java.util.List;

public class CarrierUser {

    public List<String> picturesUrls;


    public CarrierUser() {

    }

    public CarrierUser(List<String> picturesUrls) {
        this.picturesUrls = picturesUrls;
    }
}

我确实有另一个值和字段,但是它们被插入了,只有这个带有路径的列表没有。当我向该列表添加路径时,也许我做错了什么,但我无法弄清楚到底是什么问题。你能帮帮我吗?非常感谢。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读