我正在制作一个Android应用。我想发布人们的广告。但是我遇到了一个问题。我无法查询所有孩子。我有2个类型信息。这些是所选的类别和用户名(@之前的单词。)我想根据该类别发布所有用户广告。但是我无法覆盖所有孩子,我也不知道该怎么做。顺便说说;当我到达所有孩子时。我不知道该如何扎根。不幸的是:我无法正确解释我的问题。 这样:我用图像向您展示我的问题。
这是我的基于firebase的数据库如何查看:
例如:我正在寻找“KadınSağlığı”。
在我需要找到这些根之后:
最后这是我的代码:
firebaseDatabase = FirebaseDatabase.getInstance();
uzmanlar_firebaseDatabase = firebaseDatabase.getReference("Uzman/");
uzmanlar_firebaseDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
uzman_kisiler_ilanlar_array.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String child = ds.getKey();
uzman_kisiler_ilanlar_array.add(child);
for (int i = 0; i < uzman_kisiler_ilanlar_array.size(); i++) {
Log.i(TAG, "uzmanlarım: " + uzman_kisiler_ilanlar_array.get(i).toString() + " " + uzman_kisiler_ilanlar_array.size() );
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
for (String s: uzman_kisiler_ilanlar_array
) {
uzmanlar_yetenekler_firebaseDatabase = firebaseDatabase.getReference("Uzman/" + s + "/" + "yetenekler/" );
uzmanlar_yetenekler_firebaseDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds:dataSnapshot.getChildren()
) {
String ss = ds.getValue().toString();
Log.i(TAG, "yetenekl: " + ss );
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我该怎么做?
答案 0 :(得分:0)
您将孩子与root混淆了,您的意思可能是相应子节点的父节点。
我认为您想从当前正在侦听的节点获取父节点
DatabaseReference
。请签出DatabaseReference docs。
从getParent()
调用getRoot()
或dataSnapshot.getRef()
可能会完成这项工作。
如文档所述:
getRoot()
返回对该Firebase数据库的根目录的引用。
getParent()
到父位置的DatabaseReference,如果此实例引用根位置,则为null
编辑:
uzmanlar_firebaseDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
uzman_kisiler_ilanlar_array.clear();
DatabaseReference root = dataSnapshot.getRef().getRoot();
// Now you got the root
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});