Cómo mostrar imágenes de almacenamiento de Firebase en GridView
Soy nuevo en Android, estoy aprendiendo sobre gridview ... muestro una lista de imágenes de drawable a gridview pero no sé cómo mostrar imágenes de Firebase Storage en gridview
Vi muchos tutoriales y probé muchas respuestas de Stackoverflow, pero no puedo obtener lo que necesito
Creé una nueva carpeta en Firebase Storage y subo 6 imágenes allí y quiero mostrar las 6 imágenes en gridview
Aquí está mi código de cómo muestro las imágenes de Drawable y no sé cómo cargar esa URL y en Glide estaba totalmente confundido y desordenado
public class NewListCreate extends BottomSheetDialogFragment {
int[] images = {R.drawable.menu, R.drawable.musicbox, R.drawable.shoppingbag, R.drawable.shoppingcart, R.drawable.wallet, R.drawable.weddingdress};
int imageRes = images[0];
public NewListCreate() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.new_list_create, container, false);
ImageButton done = view.findViewById(R.id.done);
final EditText listname = (EditText) view.findViewById(R.id.listname);
final GridView gridView = (GridView) view.findViewById(R.id.gridview);
final CustomAdpter customAdpter = new CustomAdpter(images, getContext());
gridView.setAdapter(customAdpter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
customAdpter.selectedImage = i;
customAdpter.notifyDataSetChanged();
imageRes = images[i];
}
});
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String itemname = listname.getText().toString();
if (!TextUtils.isEmpty(listname.getText().toString())) {
startActivity(new Intent(getContext(), CheckslateHome.class).putExtra("data", itemname).putExtra("image", imageRes));
dismiss();
} else {
Toast.makeText(getContext(), "List Name not Empty ", Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
public class CustomAdpter extends BaseAdapter {
public int selectedImage = 0;
private int[] icons;
private Context context;
private LayoutInflater layoutInflater;
public CustomAdpter(int[] icons, Context context) {
this.icons = icons;
this.context = context;
this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return icons.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = layoutInflater.inflate(R.layout.image_list, viewGroup, false);
}
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
ImageView imageicons = view.findViewById(R.id.image);
if (i < icons.length) {
imageicons.setImageResource(icons[i]);
if (i != selectedImage) {
imageicons.setImageAlpha(50);
}
imageicons.setScaleType(ImageView.ScaleType.CENTER_CROP);
// imageicons.setLayoutParams(new GridView.LayoutParams(150, 150));
if (i == selectedImage) {
view.setBackgroundColor(Color.WHITE);
} else {
view.setBackgroundColor(Color.TRANSPARENT);
}
}
;
return view;
}
}
}
aquí está la información de almacenamiento de firebase

Respuestas
He creado una clase FirebaseUtils , desde dentro tengo una variedad de métodos de base de fuego estáticos que puedo elegir (sin juego de palabras).
Para lograr lo que desea, simplemente cree un bucle y luego llame al método downloadPic a continuación
for( int index = 0; index < noOfPhotos; index++ )
FirebaseUtils.downloadPic( ivPic[index], "Photos/", image[index] );
ivPic es la vista de la imagen
picToDisplay es la imagen descargada del almacenamiento
storageFolder es la carpeta en firebase, por ejemplo: Photos /
picToDownload es el nombre de la imagen dentro de la carpeta de
almacenamiento noOfPhotos es la cantidad de fotos que tiene, obviamente puede configurar una consulta y cargar ellos en una ArrayList
por conveniencia
//////////////////////////////////////////////////////////////////////////////////
private static void loadPicIntoGlide( @NonNull ImageView ivPic,
@NonNull String picToDisplay )
{
if( picToDisplay.isEmpty() )
{
Glide.with( ivPic.getContext() )
.load( R.mipmap.ic_default_pic )
.into( ivPic );
}
else
{
Glide.with( ivPic.getContext() )
.load( picToDisplay )
.into( ivPic );
}
}
///////////////////////////////////////////////////////////////////////////////////
public static void downloadPic( @NonNull ImageView ivPicView,
@NonNull String storageFolder,
@NonNull String picToDownload )
{
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
Uri uri = Uri.fromFile( new File( picToDownload ) );
StorageReference storageReference = storageRef.child(
storageFolder + picToDownload );
storageReference.getDownloadUrl().addOnSuccessListener(
new OnSuccessListener<Uri>()
{
@Override
public void onSuccess( Uri uri )
{
String actPic = uri.toString();
loadPicIntoGlide( ivPicView, actPic );
}
} )
.addOnFailureListener( new OnFailureListener()
{
@Override
public void onFailure( @NonNull Exception e )
{
loadPicIntoGlide( ivPicView, "" );
}
} );
}