Java 在Firebase数据库的Imageview中显示存储在Firebase存储中的图像

Java 在Firebase数据库的Imageview中显示存储在Firebase存储中的图像,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试显示已成功上载到firebase存储中的图像,其唯一id也在firebase数据库中Imageview中的“pics”下更新,但我尝试了多次,但无法显示图像或检索图像 下面是我的Firebase数据库结构。 我的观点是 其中图像应该显示在书架的地方,书架是默认的图片,但不能这样做。 下面是我的上传活动 public类UploadBook扩展了appcompative活动{ Firebase数据库; EditText etAuthor、etbookDesc、etbookTitle、

我正在尝试显示已成功上载到firebase存储中的图像,其唯一id也在firebase数据库中Imageview中的“pics”下更新,但我尝试了多次,但无法显示图像或检索图像

下面是我的Firebase数据库结构。

我的观点是

其中图像应该显示在书架的地方,书架是默认的图片,但不能这样做。 下面是我的上传活动

public类UploadBook扩展了appcompative活动{
Firebase数据库;
EditText etAuthor、etbookDesc、etbookTitle、etName、eTmail、etMobile、etUniversity、etbookPrice;
图像视图iv1;
按钮b1;
AlertDialog.builder1;
数据库引用dbreference;
字符串项=“开始”;//用于微调器
火基储存;
专用静态最终int摄像机\u请求\u代码=1;
存储参考mStorageRef;
弗斯;
整数计数=0;
urifilepath=null;
公共书籍b;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(com.nepalpolice.bookbazaar.R.layout.activity\u upload\u book);
getSupportActionBar().setTitle(“上传书”);
if(Build.VERSION.SDK\u INT>Build.VERSION\u code.LOLLIPOP)
ActivityCompat.requestPermissions(UploadBook.this,新字符串[]{android.Manifest.permission.CAMERA,android.Manifest.permission.READ_EXTERNAL_STORAGE,android.Manifest.permission.WRITE_EXTERNAL_STORAGE},11);
database=FirebaseDatabase.getInstance();
dbreference=database.getReference();
fauth=FirebaseAuth.getInstance();
mStorageRef=FirebaseStorage.getInstance().getReference();
iv1=(ImageView)findViewById(com.nepalpolice.bookbazaar.R.id.itemImage1);
eAuthor=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText1);
etbookDesc=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText2);
etbookTitle=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText3);
etName=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText4);
etEmail=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText5);
etMobile=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText6);
etUniversity=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText7);
etbookPrice=(EditText)findViewById(com.nepalpolice.bookbazaar.R.id.editText8);
b1=(按钮)findViewById(com.nepalpolice.bookbazaar.R.id.buttonPost);
t3 t=新的t3();
t、 执行();
Spinner Spinner=(Spinner)findViewById(com.nepalpolice.bookbazaar.R.id.spinner1);
最终字符串[]项=新字符串[]{“选择您的类别:”、“计算机科学”、“电子”、“机械”、“民用”、“电气”、“机电一体化”、“软件”、“其他”};
ArrayAdapter spinneradapter=新的ArrayAdapter(这个,android.R.layout.simple\u微调器\u下拉菜单\u项,项);
spinner.setAdapter(spinneradapter);
spinner.setActivated(假);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(适配器视图适配器视图视图视图视图内部位置长l){
item=adapterView.getItemAtPosition(position.toString();
计数=位置;
如果(位置==0)
返回;
Toast.makeText(adapterView.getContext(),“Selected:”+项,Toast.LENGTH\u LONG.show();
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
imageButtonclick();
postButtonClick();
builder1=新建AlertDialog.Builder(此);
builder1.setMessage(“放弃此项!”);
builder1.setCancelable(true);
builder1.setPositiveButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
builder1.setNegativeButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
Intent in=newintent(UploadBook.this,BooksPage.class);
星触觉(in);
完成();
dialog.cancel();
}
});
}
作废图像按钮单击(){
iv1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
activity(filePath).setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1,1).start(UploadBook.this);
//意向意向=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
//intent.putExtra(MediaStore.EXTRA\u输出,imageuri);
//startActivityForResult(意图、摄像机请求代码);
}
});
}
void postbutonclick(){
b1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(计数=0){
Toast.makeText(UploadBook.this,“请选择有效类别”,Toast.LENGTH_SHORT.show();
返回;
}
如果(!TextUtils.isDigitsOnly(etMobile.getText())| | etMobile.getText().toString().trim().length()!=10){
Toast.makeText(UploadBook.this,“请检查数字格式!”,Toast.LENGTH\u SHORT.show();
返回;
}
if(etAuthor.getText().toString().trim().length()>0&&etbooksdesc.getText().toString().trim().length()>0
&&etbookTitle.getText().toString().trim().length()>0&&etName。
if(filePath != null) {
    mStorageRef.child(bookid[0]).putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            Task<Uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl();
            Toast.makeText(UploadBook.this, "Upload successful", Toast.LENGTH_SHORT).show();
            dbreference.child("books").child(item).child(bookid[0]).child("pics").setValue(downloadUrl.toString());
        }
    })
    .addOnFailureListener(new OnFailureListener() {
         @Override
         public void onFailure(@NonNull Exception e) {

        }
     });
}
final StorageReference ref = mStorageRef.child(bookid[0]);
UploadTask uploadTask = ref.putFile(file);

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();
        }
        return ref.getDownloadUrl();

    }
    }).addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
            if (task.isSuccessful()) {
                Uri downloadUri = task.getResult();
                dbreference.child("books").child(item).child(bookid[0]).child("pics").setValue(downloadUri.toString());
            } else {
                 // Handle failures
            }
       }
});