作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我的数据库具有以下结构:
data
|___randomId1
| |_________randomData1
| |______Key1: value
| |______Key2: value
|___randomId2
|_________randomData2
|______Key1: value
|______Key2: value
我想迭代获取所有值,并保存父 ID (randomId1, randomId2)。我怎样才能循环?现在我有以下内容:
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
// what to put here to get the values and also save the ids?
}
}
您会看到每个 randomData
都有相同的映射(Key1 和 Key2)。
最佳答案
要解决这个问题,您需要使用两个嵌套循环,如下面的代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dataRef = rootRef.child("data");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
String parentKey = dSnapshot.getKey();
for(DataSnapshot ds : dSnapshot.getChildren()) {
String key = ds.getKey();
String key1 = ds.child("Key1").getValue(String.class);
String key2 = ds.child("Key2").getValue(String.class);
Log.d(TAG, key1 + " / " + key2);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
dataRef.addListenerForSingleValueEvent(valueEventListener);
关于java - 如何多次getChildren并保存父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53850768/
我是一名优秀的程序员,十分优秀!