gpt4 book ai didi

java - 根据某个对象提供的数据从某个对象检索 Firebase 数据

转载 作者:行者123 更新时间:2023-12-01 22:49:07 25 4
gpt4 key购买 nike

Database Structure

我是 Android Firebase 新手。我有一些应用程序,其中我将所有酒店的 ID 保存在一个对象中。我只有 id,所以根据这些 id,我想检索其他对象内的所有信息。到目前为止我已经尝试过了

reference=FirebaseDatabase.getInstance().getReference().child(getResources().getString(R.string.all_countries)).child(country).child(city).child("Hotel");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
hotels=new ArrayList<>();
for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren()){
String id=dataSnapshot1.getKey();
hotelIDs.add(id);
reference1=FirebaseDatabase.getInstance().getReference().child("Hotel").child(id);
reference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Hotel hotel=dataSnapshot.getValue(Hotel.class);
hotels.add(hotel);
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
// }
hotelsAdapter=new HotelsAdapterUser(hotels,UserViewHotels.this,"Hotel");
hotelsRV.setAdapter(hotelsAdapter);

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.e("iamhere",databaseError.getMessage());

}
});

我在 hotelIDs 数组列表中拥有所有 id,并且基于此,当我尝试获取数据时,我的适配器在酒店数组列表设置之前调用,这意味着我没有获取任何数据。请帮助

最佳答案

最简单的解决方法是每次将酒店添加到列表时通知适配器:

reference1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Hotel hotel=dataSnapshot.getValue(Hotel.class);
hotels.add(hotel);
adapter.notifyDataSetChanged()
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});

我在这里做了一些更改:

  • 使用addListenerForSingleValueEvent,这样我们就不会附加监听器。使用原始代码,如果您对数据库中的酒店进行了更改,该酒店的第二个副本将添加到列表中。
  • 请勿将 onCancelled 留空,因为您可能会在那里隐藏重要的错误消息。我在这里以最简单的方式实现了它。

关于java - 根据某个对象提供的数据从某个对象检索 Firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463747/

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