mxm*_*xml 32 android firebase firebase-realtime-database
我有这个firebase数据库
我需要获得所有用户的电话号码,我应该使用哪个听众来获取所有用户?
每个用户都被添加为一个对象,其中user-ID作为该对象的名称,我需要在不知道该用户ID的情况下检索这些对象
我搜索了文档,它与之相关DataSnapshot但我DataSnapshot没有听众就得到了!寻找DataSnapshout是否正确或我是否应该使用其他东西
Tem*_*Dev 42
首先检索用户数据快照.
//Get datasnapshot at your "users" root node
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
ref.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Get map of users in datasnapshot
collectPhoneNumbers((Map<String,Object>) dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
//handle databaseError
}
});
Run Code Online (Sandbox Code Playgroud)
然后循环访问用户,访问他们的地图并收集电话字段.
private void collectPhoneNumbers(Map<String,Object> users) {
ArrayList<Long> phoneNumbers = new ArrayList<>();
//iterate through each user, ignoring their UID
for (Map.Entry<String, Object> entry : users.entrySet()){
//Get user map
Map singleUser = (Map) entry.getValue();
//Get phone field and append to list
phoneNumbers.add((Long) singleUser.get("phone"));
}
System.out.println(phoneNumbers.toString());
}
Run Code Online (Sandbox Code Playgroud)
此侦听器仅在显式调用时检索数据快照.除了用户节点之外,还应考虑在"allPhoneNumbers"节点下存储数字列表.这将使您的数据快照更轻,更容易处理收集所有数字.如果你说数百个用户,"用户"数据快照将太大,"allPhoneNumbers"列表将更有效率.
上面的代码在您的示例数据库上进行了测试并且确实有效.但是,您的手机字段可能需要转换为String或int,具体取决于用户的电话实例字段的类型.
小智 12
DatabaseReference ref1= FirebaseDatabase.getInstance().getReference();
DatabaseReference ref2,ref3,ref4;
ref2 = ref1.child("User");
ref2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Userlist = new ArrayList<String>();
// Result will be holded Here
for (DataSnapshot dsp : dataSnapshot.getChildren()) {
Userlist.add(String.valueOf(dsp.geValue())); //add result into array list
}
/* userlist will store all values of users, then point to every userlist item
and get mobile numbers*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60690 次 |
| 最近记录: |