我目前刚接触Firebase。
我把钥匙放在 - >>用户>答案 - >的键 - >真 然后我用了这个:
Firebase re = New Firebase(blabla..user->answer);
refLoadId_Question_Question.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
System.out.println("Id_question1: " + dataSnapshot.getValue());
System.out.println("Id_question1: " + dataSnapshot.getChildren().toString());
list_id_question.add(dataSnapshot.getKey());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
我在dataSnapsho.getValue()中收到:Id_question1:{ - Ja3RTtq5DMGIdVF9-pC = true};
我的问题是可以从java中获取Object类型的键值吗?我想得到这个值: -Ja3RTtq5DMGIdVF9-pC
任何人请帮忙? 感谢..
答案 0 :(得分:1)
你需要迭代孩子:
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
System.out.println(childSnapshot.getKey());
}
或者你也可以听孩子而不是整个答案对象:
refLoadId_Question_Question.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot childSnapshot) {
System.out.println(childSnapshot.getKey());
}
}
当你开始处理数据同步而不仅仅是拉下初始数据时,后者会变得更简单。
假设您有两个人在使用您的应用程序:
最初,第一个用户将下载问题和两个答案。然后当第二个用户提供第三个答案时,您的初始代码将(可能)重新下载所有三个答案。只会为新答案调用第二个示例。
答案 1 :(得分:0)
我目前使用此代码获取ID。
但如果ID问题不止一个,我就不会尝试
if (dataSnapshot.getValue() != null) {
Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
String ID_Question = newPost.keySet().toString().replace("[", "");
ID_Question = ID_Question.replace("]", "");
System.out.println("Id_question1: " + ID_Question);
list_id_question.add(ID_Question);
}