Yes it is. You can store all image urls in the Firebase Realtime database and when you want to retrieve a specific number of random images, use my answer from this post.
Assuming that you have a Firebase database that looks like this:
Firebase-root
|
--- imageUrls
|
--- HollandImageUrl: true
|
--- SpainImageUrl: true
|
--- FranceImageUrl: true
|
--- //Other Countries
To get 5 randomn urls, please use the following code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference imageUrlsRef = rootRef.child("imageUrls");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> urlList = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String url = ds.getKey();
urlList.add(url);
}
int urlCount = urlList.size();
int randomNumber = new Random().nextInt(urlCount);
List<String> randomUrlList = new ArrayList<>();
for (int i=1; i<=5; i++) {
randomUrlList.add(urlList.get(randomNumber));
//Set image to ImageView
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
imageUrlsRef.addListenerForSingleValueEvent(valueEventListener);
According to your comment and your database structure, please use the following code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference countriesRef = rootRef.child("countries");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> urlList = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String url = ds.child("Image").getValue(String.class);
urlList.add(url);
}
int urlCount = urlList.size();
int randomNumber = new Random().nextInt(urlCount);
List<String> randomUrlList = new ArrayList<>();
for (int i=1; i<=5; i++) {
randomUrlList.add(urlList.get(randomNumber));
//Set image to ImageView
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
countriesRef .addListenerForSingleValueEvent(valueEventListener);