情况如下,我将Firebase DB用于小型应用程序,DB的结构如下。
我知道这种结构对于Firebase来说并不是最好的,可能问题在这里。
我的问题是,当我试图从父母那里获取儿童名单时,Firebase会从一个更深层次的实体向我提供儿童名单。对于前者与这个数据库样本有关 - 如果我试图从"大学"实体,我得到输出" Faculty",但应该得到输出" UNN"。我是对的吗?
以下是我用于检索数据的代码示例:
mDBRef = FirebaseDatabase.getInstance().getReference().child("University");
final ListView listView = (ListView) findViewById(R.id.lv_main);
mGruppeChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
List<String> lst = new ArrayList<String>(); // Result will be holded Here
for (DataSnapshot dsp : dataSnapshot.getChildren()) {
lst.add(String.valueOf(dsp.getKey())); //add result into array list
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, lst);
listView.setAdapter(adapter);
}
答案 0 :(得分:0)
好吧,这是因为firebase的onChildAdded方法带有你正在阅读的父级子项的参数。如果您在“大学”上添加了儿童事件监听器,您将获得类似'UNN' - &gt; Faculty的价值。再次,如果您对此执行getChildren方法,您将获得'Faculty' - &gt; RGF。所以如果你申请了getKey,当然它会返回Faculty。