我正在使用Android Studio尝试使用Firebase数据库。我遇到了以下问题。我想为多个恐龙创建卡片(这些在Db中)。因此,我尝试使用Firebase提供的“ onChildAdded”功能。我使用DataSnapshot尝试仅添加尚未被用户“评级”的恐龙卡。(就像在人们喜欢或不喜欢恐龙的火种应用程序中看到它一样)。
这是我的代码:
public int counter = 0;
private void getDinos() {
final DatabaseReference dinosDb = FirebaseDatabase.getInstance().getReference().child("Users").child("Dinos");
dinosDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if (dataSnapshot.exists()){
ArrayList<String> dinoList = new ArrayList<String>(){{ add("Allosaurus"); add("Ankylosaurus"); add("Baryonyx");add("Brachiosaurus");add("Carnotaurus");add("Dilophosaurus");add("Diplodocus");add("Gallimimus"); add("Giganotosaurus"); add("Iguanodon"); add("Megalosaurus"); add("Spinosaurus"); add("Stegosaurus"); add("Triceratops"); add("Tyrannosaurus"); add("Velociraptor");}};
if (!dataSnapshot.child(dinoList.get(i)).child("connections").child("like").hasChild(currentUId) && !dataSnapshot.child(dinoList.get(i)).child("connections").child("dislike").hasChild(currentUId)) {
Log.d("mine", "" + dataSnapshot + dataSnapshot.child(dinoList.get(counter)).child("connections").child("dislike").hasChild(currentUId));//deze shit gaat dus fout
cards theItem = new cards(dataSnapshot.getKey(), (String) dataSnapshot.child(dinoList.get(i)).getKey());
rowItems.add(theItem);
arrayAdapter.notifyDataSetChanged();
}
counter++;
}
}
如您所见,我在第10行有一个Log.d行,该行记录了当前的dataSnapshot,并在当前用户不喜欢该恐龙之后立即记录。
如果有人可以对我在这里做错的事情提供一些见解,我将不胜感激。我真的是Android Studio的新手,这只是一个学校项目,因此解决方案是否真的很糟糕都没关系。如果可行,则可以。
相关分类