Comment afficher des images de stockage Firebase dans GridView
Je suis nouveau sur Android, j'apprends gridview..i Afficher une liste d'images de drawable à gridview mais je ne sais pas comment afficher des images de Firebase Storage dans gridview
J'ai vu de nombreux tutoriels et j'ai essayé beaucoup de réponses Stackoverflow mais je ne peux pas obtenir ce dont j'ai besoin
J'ai créé un nouveau dossier dans Firebase Storage et j'y télécharge 6 images et je veux afficher toutes les 6 images dans gridview
Voici mon code de la façon dont j'affiche des images à partir de drawable et je ne sais pas comment charger cette URL et en glissement j'étais totalement confus et me suis dérangé
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;
}
}
}
voici les informations de stockage Firebase

Réponses
J'ai créé une classe FirebaseUtils , à partir de laquelle j'ai une gamme de méthodes Firebase statiques que je peux choisir (sans jeu de mots).
Afin d'obtenir ce que vous voulez, créez simplement une boucle puis appelez la méthode downloadPic ci-dessous
for( int index = 0; index < noOfPhotos; index++ )
FirebaseUtils.downloadPic( ivPic[index], "Photos/", image[index] );
ivPic est la vue de l'image
picToDisplay est la photo téléchargée depuis le stockage
storageFolder est le dossier sur Firebase par exemple: Photos /
picToDownload est le nom de la photo dans le storageFolder
noOfPhotos est le nombre de photos que vous avez, évidemment vous pouvez configurer une requête et charger les dans un ArrayList
pour plus de commodité
//////////////////////////////////////////////////////////////////////////////////
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, "" );
}
} );
}