如何从Firebase中检索特定的数据列表 [英] How to retrieve specific list of data from firebase
问题描述
我是新来的 firebase
和 nosql
数据库
<我试图从Firebase中检索一些特定的数据。我有一个节点大学
,并且该节点有许多唯一的标识符作为具有更多数据的节点。我想从每个节点检索 name
。
请看看这个。
到目前为止,我尝试过使用 addChildEventListener
,但是这只能侦听第一个孩子。我调试过它,它只显示大学的第一个孩子的值
节点。
myRef.addChildEventListener(new ChildEventListener(){
@Override $ b $ 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){
$ b @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);
列表< University>大学=(List< University>)dataSnapshot.getValue(University.class);
* // * (DataSnapshot dsp:dataSnapshot.getChildren()){
lst.add(dsp.getKey());
}
Log.d(TAG,lst.toString()); * // *
Map< String,Object> td =(HashMap< String,Object> )dataSnapshot.getValue();
* // // List& LT;对象> values = new ArrayList< Object>(td.values());
列表< 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){
$ b});
addValueEventListener
从Firebase检索所有大学 列表< University> universityList = new ArrayList<>();
myRef.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot snapshot){
universityList.clear();
for(DataSnapshot postSnapshot: snapshot.getChildren()){
University university = postSnapshot.getValue(University.class);
universityList.add(university);
//在这里你可以访问name属性像university.name
}
}
@Override
public void onCancelled(DatabaseError databaseError){
System.out.println (读取失败:+ firebaseError.getMessage());
}
});
或者如果您使用 addChildEventListener
列表< University> universityList = new ArrayList<>();
myRef.addChildEventListener(new ChildEventListener(){
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){
University university = dataSnapshot.getValue(University.class);
universityList.add(university);
Log.i(TAG,add university name =+ university.name);
...
}
。 ..
}
I am new to firebase
and nosql
database
I am trying to retrieve some specific data from a Firebase. I have a node universities
and that node has many unique identifier as node which has so more data into it. I want to retrieve name
from each node.
Please have a look at this.
What I have tried so far: I tried using addChildEventListener
but this only listens first child. I've debugged it and it was only showing the values of the first child of universities
node.
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) {
}
});
I have also tried addValueEventListener
. This listens the whole node and return whole data, but I am unable to extract "name" for it since it contains unique identifiers.
Please guide me into the right directions.
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) {
}
});
If you using addValueEventListener
for retrieve all university from Firebase
List<University> universityList = new ArrayList<>();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
universityList.clear();
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
University university = postSnapshot.getValue(University.class);
universityList.add(university);
// here you can access to name property like university.name
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
Or if you using addChildEventListener
List<University> universityList = new ArrayList<>();
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
University university = dataSnapshot.getValue(University.class);
universityList.add(university);
Log.i(TAG,"add university name = " + university.name);
...
}
...
}
这篇关于如何从Firebase中检索特定的数据列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!