这是我的firebase树。
"LAMBO" : {
"LAMBO" : {
"colour" : "blue",
"date" : "08 04 2018",
"doors" : "2",
"enginesize" : "3000",
"fuel" : "petrol",
"lotnumber" : "99",
"manufacturer" : "Lamborghini",
"model" : "cuntash",
"reg" : "LAMBO"
}
}
"FIESTA" : {
"FIESTA" : {
"colour" : "red",
"date" : "08 04 2018",
"doors" : "5",
"enginesize" : "1300",
"fuel" : "petrol",
"lotnumber" : "1",
"manufacturer" : "ford",
"model" : "fiesta",
"reg" : "FIESTA"
}
}
等等......
当用户向树中添加更多汽车时,显然列表会变大。我希望能够获得树中所有项目的列表。但我不知道关键名称,因为我无法控制用户拥有的密钥。钥匙是=汽车登记所以每次都是独一无二的。
我通常接触孩子的方式是
String lambo = datasnapshot.child("LAMBO").getValue(String.class)
来自ChildEventListener
。但我不知道(" KEYNAME")
我找到了这段代码
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
int i = 0;
for(DataSnapshot d : dataSnapshot.getChildren()) {
}
}
}//onDataChange
@Override
public void onCancelled(DatabaseError error) {
}//onCancelled
});
我只想在列表视图中使用主键,即LAMBO和FIESTA也不是它的孩子。任何帮助将被赞赏和抱歉混淆
答案 0 :(得分:0)
您可以使用DataSnapShot中的getKey():
List<String> keyList = new ArrayList<>();
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
keyList.add(ds.getKey());
}
}
}
@Override
public void onCancelled(DatabaseError error) {
}
});
希望它有所帮助!