无法使用地图获取Firebase数据库中的所有子数据? [英] Unable to get All child data in Firebase Database using a Map?
问题描述
GenericTypeIndicator< Map< String,Object>> m = new GenericTypeIndicator< Map< String,Object>>(){};
地图< String,Object> map = snapshot.getValue(m);
字符串用户名=(String)map.get(name);
displayName.setText(username); //显示名称
数据转化为recyclerView。但由于某些原因,而不是所有的名字(伊娃,史密斯,公主),我只是一个最新的创建公主在我的recyclerView布局(公主,公主,公主)显示3次。任何人有任何想法我做错了什么?假设您有一个名为用户
的节点,您可以在其中找到个用户
所有这些 uid's
,要得到所有这些名字,请使用下面的代码。
$ b
DatabaseReference yourRef = FirebaseDatabase.getInstance()。getReference()。child(users );
ValueEventListener eventListener = new ValueEventListener(){
@Override $ b $ public void onDataChange(DataSnapshot dataSnapshot){
String userId =(String)dataSnapshot.getKey();
DatabaseReference userIdRef = FirebaseDatabase.getInstance()。getReference()。child(users)。child(userId);
ValueEventListener eventListener = new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String name =(String)dataSnapshot.child(name)。getValue ();
Log.d(TAG,name);
}
@Override
public void onCancelled(DatabaseError databaseError){}
};
userIdRef.addListenerForSingleValueEvent(eventListener);
}
@Override
public void onCancelled(DatabaseError databaseError){}
};
yourRef.addListenerForSingleValueEvent(eventListener);
希望有帮助。
I am trying to display all child "name" located in my database tree. My Database tree I used the Map to do so:
GenericTypeIndicator<Map<String, Object>> m = new GenericTypeIndicator<Map<String, Object>>() {};
Map<String, Object> map = snapshot.getValue(m);
String username = (String) map.get("name");
displayName.setText(username);// Display the name
I am displaying all the data into a recyclerView. But for some reasons instead of getting all names(Eva, smith, princess), I am only one which is the lastest one created "princess" being displayed 3 times in my recyclerView layout(princess, princess, princess). Anyone has any idea what I am doing wrong?
Assuming that you have a node named users
in which you have all those uid's
, to get all those name, please use the code below. Is the easiest way to achieve this.
DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("users");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userId = (String) dataSnapshot.getKey();
DatabaseReference userIdRef = FirebaseDatabase.getInstance().getReference().child("users").child(userId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = (String) dataSnapshot.child("name").getValue();
Log.d("TAG", name);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
userIdRef.addListenerForSingleValueEvent(eventListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);
Hope it helps.
这篇关于无法使用地图获取Firebase数据库中的所有子数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!