firebase / Android:同时获取图像和数据

问题描述

在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);