gpt4 book ai didi

java - 从 Firebase 存储中获取随机图像

转载 作者:行者123 更新时间:2023-12-02 02:09:37 25 4
gpt4 key购买 nike

我正在为一个学校项目制作一个应用程序,它基本上是一个旅行助手。用户可以在主页上看到随机的国家/地区卡片,这样他就可以单击并获取有关该国家/地区的更多信息。

我的所有国家/地区卡片图像都存储在 Firebase Storage 中名为“countryCardImages”的目录中。所有图像都有它们所代表的国家/地区的名称,因此我无法使用 getName (元数据函数)检索该名称。问题是,如果我将所有照片从 1 重命名为 n,我可以简单地生成一个随机数并将其连接到链接,这样每次我打开 MainActivity 时,它都会生成不同的数字并显示不同的图像。此方法的问题是,我无法检索国家/地区名称,因为没有地方保存该值。因此,我唯一的选择是用国家/地区名称来命名图像。还有另一种方法可以用这种“方法”显示随机图像吗?

数据库结构: enter image description here

最佳答案

是的。您可以将所有图像网址存储在 Firebase Realtime 数据库中,当您想要检索特定数量的随机图像时,请使用我在这个 post 中的答案。

假设您有一个如下所示的 Firebase 数据库:

Firebase-root
|
--- imageUrls
|
--- HollandImageUrl: true
|
--- SpainImageUrl: true
|
--- FranceImageUrl: true
|
--- //Other Countries

要获取 5 个随机网址,请使用以下代码:

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

根据您的评论和您的数据库结构,请使用以下代码:

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

关于java - 从 Firebase 存储中获取随机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com