问题描述
在firebase实时数据库中,我保存有关产品的信息,在firebase存储中,我保存产品的相应映像。我希望在调用产品数据时也获得图像,我知道如何调用数据并将其放置在editText中,但是我不知道如何在ImageView中调用和显示图像。
这是我保存图像的方式:
private void SaveImage(){
Verificar();
if (ver == true){
errorTitulo.setVisibility(View.GONE);
sId = UUID.randomUUID().toString();
StorageReference filePath =
fireStorage.child("ProductosImg").child(uri.getLastPathSegment());
filePath.putFile(uri).addOnSuccessListener(new
OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Crear();
}
});
}else {
errorTitulo.setVisibility(View.VISIBLE);
pDialog.dismiss();
}
}
这是我保存产品数据的方式:
private void Crear(){
Producto p = new Producto();
p.setUid(sId);
p.setCategoria(sCategoria);
p.setNombre(sNombre);
p.setDescripcion(sDescrip);
p.setValor(sValor);
fireData.child("Producto").child(p.getUid()).setValue(p);
pDialog.dismiss();
Toast.makeText(PaginaActivity.PaginaA,"Producto creado",Toast.LENGTH_SHORT).show();
}
我认为在保存具有与我可以调用的数据相同的标识的图像时,但是我不知道如何放置相同的ID。
解决方法
您可以使用push()方法创建随机ID名称。如果每个用户有不止一种产品,请在uid部分后使用push()方法创建路径。并且在创建图像的路径时也使用该哈希值,以便您可以知道哪个图像属于哪个产品。
要显示图像,可以同时使用Glide和Picasso:
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("ProductosImg/randomHashOfProduct.jpg");
Glide.with(this /* context */)
.using(new FirebaseImageLoader())
.load(storageReference)
.into(imageView);