【发布时间】:2016-12-03 18:27:24
【问题描述】:
我是 firebase 和 nosql 数据库的新手
我正在尝试从 Firebase 检索一些特定数据。我有一个节点universities,并且该节点具有许多唯一标识符作为节点,其中包含更多数据。我想从每个节点检索name。
请看这个。
到目前为止我已经尝试过:我尝试使用 addChildEventListener 但这只会听第一个孩子。我已经调试过了,它只显示了universities 节点的第一个子节点的值。
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
List<University> university = new ArrayList<>();
Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
Log.d("TAG",dataSnapshot.getValue().toString());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我也试过addValueEventListener。这会监听整个节点并返回整个数据,但我无法为其提取“名称”,因为它包含唯一标识符。
请指引我正确的方向。
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
University university = dataSnapshot.getValue(University.class);
List<University> universities = (List<University>) dataSnapshot.getValue(University.class);
*//*List<String> lst = new ArrayList<String>();
for(DataSnapshot dsp : dataSnapshot.getChildren()){
lst.add(dsp.getKey());
}
Log.d("TAG",lst.toString());*//*
Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
*//*List<Object> values = new ArrayList<Object>(td.values());
List<String> list=new ArrayList<String>();
for(int i=0; i<values.size(); i++){
list.add((String) values.get(i));
}*//*
Log.d("TAG", university.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【问题讨论】:
标签: java android json firebase firebase-realtime-database