如何从Firebase中的某个桌子的子项中获取值?
我一直在堆叠溢出上找到的所有答案对此都很少甚至没有答案,我认为这是非常基本的。
我想获取亚当的图片或分数数据。不使用实际名称“adam”而是使用位置编号0。
到目前为止,我只能得到孩子的大小,就像这样
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("table_one");
//
// myRef.setValue("Check 2!");
// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
// String value = dataSnapshot.getValue(String.class);
Log.d("check", "count is: " + dataSnapshot.getChildrenCount());
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w("check", "Failed to read value.", error.toException());
}
});
是不是有一种简单的方法来获取该表的所有子项并查看它们?
答案 0 :(得分:0)
您可以创建ArrayList
,然后使用list.get(0)
,如下所示:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference tableOneRef = rootRef.child("table_one");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String pic = ds.child("pic").getValue(String.class);
list.add(pic);
}
Log.d("TAG", list.get(0));
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
tableOneRef.addListenerForSingleValueEvent(eventListener);
输出中的结果将是:http://...
。
还有一件事要提到,第一个对象中的score
属于String
类型,第二个属性为Integer
类型。确保所有对象中的score
具有相同的类型。
答案 1 :(得分:0)
获取所有子项并使{name}和userImage
成为Map
Map<String , String> usersWithImages = new HashMap<>();
...
FirebaseDatabase.getInstance().getReference().rootRef.child("table_one").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String user = ds.getKey()
String image = ds.child("pic").getValue(String.class);
usersWithImages.put(user , image);
}
}
...
});
...
//some where
String adamImage = usersWithImages.get('adam');
System.out.println(adamImage);