[英]How to read data from Firebase database to a List
Before going into the issue here is the database structure in question 在讨论问题之前,这里是有问题的数据库结构
So, I am trying to read all available data under the child KkOz7Zg9iNqms1vZJA6
. 因此,我正在尝试读取子KkOz7Zg9iNqms1vZJA6
下的所有可用数据。 The issue I am facing right now is in reading the Values inside the child -KkOz7Zg9iNqms1vZJA6 / articleTags
. 我现在面临的问题是阅读子项-KkOz7Zg9iNqms1vZJA6 / articleTags
的值。 I tried using the following code 我尝试使用以下代码
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*/}
});
Since the Key values are simply "0", "1", "2", "3"
and so on, I tried using an Integer b
which increments during every iteration in For loop. 由于键值只是"0", "1", "2", "3"
,因此我尝试使用Integer b
,它在For循环的每次迭代中都递增。
The List tagList_Chosen
and even the String TagName_Chosen
always returns empty. 列表tagList_Chosen
甚至字符串TagName_Chosen
始终返回空。 Can someone point me to the problem in my code? 有人可以指出我代码中的问题吗? Where am I going wrong? 我要去哪里错了?
Thanks 谢谢
Try like this way, 像这样尝试
Inside OnDataChange use iterator, 在OnDataChange内部使用迭代器,
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
}
Please use this code: 请使用以下代码:
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*/}
});
Hope it helps. 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.