2017-05-19 84 views
0

之前进入这里的问题是有问题的数据库结构如何阅读从火力地堡数据库中的数据列表

Database Structure in Firebase

所以,我想孩子KkOz7Zg9iNqms1vZJA6下读取所有可用的数据。我现在面临的问题是读取儿童-KkOz7Zg9iNqms1vZJA6/articleTags中的值。我试着用下面的代码

List<ModelContentTag> TagList_Chosen; 

FirebaseDatabase.getInstance().getReference() 
     .child("articles") 
     .child("content") 
     .child("ta") 
     .child("all") 
     .child("KkOz7Zg9iNqms1vZJA6") 
     .addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       TagList_Chosen = new ArrayList<>(); 

       int b = 0; 
       for (DataSnapshot tagNameSnapshot : dataSnapshot.getChildren()) { 
        String TagName_Chosen = tagNameSnapshot 
          .child("articleTags") 
          .child(String.valueOf(b)) 
          .getValue(String.class); 
        TagList_Chosen.add(new ModelContentTag(TagName_Chosen)); 
        Toast.makeText(getActivity(), TagName_Chosen, Toast.LENGTH_SHORT).show(); 
        b++; 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) {/*Do Nothing*/} 
     }); 

由于键值只是"0", "1", "2", "3"等等,我尝试使用Integer b这对于每一个循环迭代期间递增。

列表tagList_Chosen甚至字符串TagName_Chosen总是返回空白。有人可以在我的代码中指出我的问题吗?我哪里错了?

感谢

回答

1

尝试这样的方式,

内OnDataChange使用iterator,

Iterator<DataSnapshot> dataSnapshotsChat = dataSnapshot.child("articleTags").getChildren().iterator(); 

    while (dataSnapshotsChat.hasNext()) { 
       DataSnapshot dataSnapshotChild = dataSnapshotsChat.next(); 
       String TagName_Chosen = dataSnapshotChild.getValue(String.class); // check here whether you are getting the TagName_Chosen     
    } 
+0

谢谢。迭代器做到了这一点。 – user3314337

0

请使用此代码:

FirebaseDatabase.getInstance().getReference() 
     .child("articles") 
     .child("content") 
     .child("ta") 
     .child("all") 
     .child("KkOz7Zg9iNqms1vZJA6") 
     .child("articleTags") 
     .addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       @SuppressWarnings("unchecked") 
       Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue(); 
       String firstValue = (String) map.get("0"); 
       String secondValue = (String) map.get("1"); 
       String thirdValue = (String) map.get("2"); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) {/*Do Nothing*/} 
}); 

希望它能帮助。