我的数据树-:
data-root
|
---sports
|
----LGhshU00shj(Pushed Key)
|
---socks
|
---LGhdudy09(Pushed Key):Black
|
---LGidiik84(Pushed Key):Red
|
---LGiddv74(Pushed Key):Brown
|
---colorType:Solid
如何烤面包显示“ Solid:Black”,“ Solid:Red”,“ Solid:Brown”?
已尝试-:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Database userWritesRef = rootRef.child("sports").child("socks");
在OnStart()函数下-:
userWritesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String userWrite = ds.getValue(String.class);
Toast.makeText(context, userWrite, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
答案 0 :(得分:0)
此代码rootRef.child("sports").child("socks")
将创建对/sports/socks
的引用。由于您的数据库中没有此类节点,因此它将创建一个不读取任何数据的侦听器。
您想要的是:
Database userWritesRef = rootRef.child("sports/LGhshU00shj/socks");
除此之外,您的数据结构有点奇怪,因为您正在将colorType
(一个命名属性)与要生成的颜色混合在一起。您可以在onDataChange
中处理它们,只需要多花一些if
:
public void onDataChange(DataSnapshot dataSnapshot) {
String colorType = dataSnapshot.child("colorType").getValue(String.class);
for(DataSnapshot ds : dataSnapshot.getChildren()) {
if (!ds.getKey().equals("colorType")) {
String userWrite = ds.getValue(String.class);
Toast.makeText(context, colorType+": "+userWrite, Toast.LENGTH_SHORT).show();
}
}
}