2017-01-18 71 views
2

我的数据库结构的样子:如何在一个节点下查询/获取数据android firebase?

myDatabasename 
name1:{ 
    UserID: { 
     uniqueId: { 
     Data1: "" 
     Data1: "" 
    } 

    UserID: { 
     uniqueId: { 
     Data1: "" 
     Data1: "" 
    } 
} 
name2:{ 
    UserID: { 
     uniqueId: { 
     Data1: "" 
     Data1: "" 
    } 

    UserID: { 
     uniqueId: { 
     Data1: "" 
     Data1: "" 
    } 

我想从节点的只是名1部分检索数据,但我不知道我怎么能做到这一点:以前我没有NAME 1和NAME,所以我能够像这样检索数据;哪些工作正常。

for (DataSnapshot ds1: ds.getChildren()) { 
     DATA data= ds1.getValue(DATA.class); 
     datas.add(data); 
    } 

我新的火力点,所以我不知道我怎么能做到这一点,我试着玩了,但它强调ds.getChildren("name1") in red

for (DataSnapshot ds1: ds.getChildren("name1")) { 
      DATA data= ds1.getValue(DATA.class); 
      datas.add(data); 
     } 

DATA data = ds1.equals("name1").getValue(DATA.class); // I tried this but it also throws red line under getValue; 

====编辑

对不起对于上述结构之前的混淆,我的结构看起来像,我可以通过使用上面的代码来阅读它。

UserID: { 
    uniqueId: { 
    Data1: "" 
    Data1: "" 
    } 
    uniqueId: { 
    Data2: "" 
    Data2: "" 
    } 
} 

回答

1

您可以通过name1所有儿童使用迭代:

for(DataSnapshot ds1 : dataSnapshot.getChildren()){ 
    // your codes 
} 

但是你应该听者作为参考点name1

databaseReference.child("name1").addListenerForSingleValueEvent(valueEventListener); 

或者,你也可以这样做:

for(DataSnapshot ds1 : dataSnapshot.child("name1").getChildren()){ 
    // your codes 
} 

,并创建一个监听器:

databaseReference.addListenerForSingleValueEvent(valueEventListener); 

您可以使用其他监听方法。

+0

嗨,我需要在哪里创建监听器/我如何创建监听器。 – SumOne

+0

里面的onCreate方法是可以的。 –

+0

@SumOne你说过,当没有“name2”的时候你可以检索“name1”。所以,你可以使用你制作的监听器。或者,如果您确实需要帮助,可以将代码发布在MainActivity和Data类中。我会帮助 –

相关问题