Java 正在从firebase中检索没有标记的子级
我正在尝试从firebase检索没有标记/名称的子节点。我知道这不是在firebase中存储子节点的正确方法,它只是存储它们以使计数函数工作的唯一方法 我正在尝试检索“技术”或“生物与生态”等类别。我的数据库设置如下:Java 正在从firebase中检索没有标记的子级,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试从firebase检索没有标记/名称的子节点。我知道这不是在firebase中存储子节点的正确方法,它只是存储它们以使计数函数工作的唯一方法 我正在尝试检索“技术”或“生物与生态”等类别。我的数据库设置如下: CountLikes{ Project 23{ Biological and Ecological{ Votes: 1 }} Project 32{ Biological and
CountLikes{
Project 23{
Biological and Ecological{
Votes: 1
}}
Project 32{
Biological and Ecological{
Votes: 0
}}
Project 439{
Technology{
Votes: 2
}}
我可以通过以下方式检索项目名称(即“项目23”、“项目32”)和投票数:
//Button Click Listener
mReadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("CountLikes/");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.getKey();
Long vote = ds.child("Votes").getValue(Long.class);
mProjectName.setText(name);
mProjectCategory.setText(String.valueOf(vote));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(eventListener);
我是否可以检索该类别?我不清楚您的数据结构的含义,因此很难准确理解您要查找的内容。但此代码将使用您当前拥有的侦听器遍历整个
DataSnapshot
:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("CountLikes");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot child: dataSnapshot.getChildren()) {
System.out.println(child.getKey()); // prints "Project 23", "Project 32", etc
for(DataSnapshot grandchild: child.getChildren()) {
System.out.println(grandchild.getKey()); // prints "Biological and Ecological", etc
System.out.println(grandchild.child("Votes").getValue(Long.class)); // prints 1, 0, etc
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
如果
投票
显示正确的结果,则名称
应位于其上方(生物和生态
或技术
)。如果不是这样,您能否显示数据库中的实际JSON(文本形式,请不要截图)?您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 对不起,是的,你说得对!我想我需要帮助检索的是“项目23”,“项目32”,而不是名称!