gpt4 book ai didi

java - 从 firebase 中检索随机节点

转载 作者:行者123 更新时间:2023-11-29 08:31:00 25 4
gpt4 key购买 nike

编辑

我有一个 firebase 数据库,其中有一棵看起来像这样的树

Stations{
Uknradio
bbcradio1
bbcradio1extra
Beatles radio

然后是一个像这样的 StationsKey 节点

Stations{
Uknradio = true
bbcradio1 =true
bbcradio1extra = true
Beatles radio = true

等等...id喜欢从数据库中拉取一个随机站

这是我使用的代码,给出了新的答案

    String DATABASE_CHILD = "STATIONS";
String DATABASE_CHILD2 ="STATIONKEY";
ref = db.getReference().child(DATABASE_CHILD2);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {

for (DataSnapshot ds : snapshot.getChildren()) {
String productId = ds.getKey();
productIdsList.add(productId);
}

int productListSize = productIdsList.size();

ref = db.getReference().child(DATABASE_CHILD).child(productIdsList.get(new Random().nextInt(productListSize)));
ref2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
mUrl.clear();
mTITLE.clear();
mDOWN.clear();
mIMAGE.clear();
mUrl.clear();
mUP.clear();
mDESC.clear();

for (DataSnapshot snap : snapshot.getChildren()) {

station_items = snap.getValue(Stations_Firebase.class);
String a =station_items.getStation();
String b = station_items.getTag();
String c = station_items.getUrl();
Long d = station_items.getUpvote();
Long e = station_items.getDownvote();
String f = station_items.getImage();

mTITLE.add(a);
mDESC.add(b);
mUrl.add(c);
mUP.add(String.valueOf(d));
mDOWN.add(String.valueOf(e));
mIMAGE.add(f);
}

private int nextInt(int productListSize) {
return 0;
}

但现在我收到这个错误

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.p9p.radioify.ui.station_tabs.Random.getRandomStations(Random.java:103)

最佳答案

编辑:2022 年 8 月 20 日

也许这些其他方法会有所帮助:


要解决这个问题,请使用以下代码行:

long childrenCount = snapshot.getChildrenCount();
int count = (int) childrenCount;
int randomNumber = new Random().nextInt(count);

然后使用 for 循环使用随机数提取该值:

int i=0;
String themeTune; //Your random themeTune will be stored here
for (DataSnapshot snap : snapshot.getChildren()) {
if(i = randomNumber) {
themeTune = snap.getValue(String.class);
break;
}
i++;
}
plysound();

关于java - 从 firebase 中检索随机节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245706/

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