为了账号安全,请及时绑定邮箱和手机立即绑定

检索父节点的子节点并对每个值执行一个方法

检索父节点的子节点并对每个值执行一个方法

不负相思意 2021-10-27 16:58:31
我正在构建一个需要从某个父节点检索所有子节点的应用程序,并希望对检索到的每个子节点执行方法调用。这是我当前的数据库:我想调用一个孩子的所有孩子,conradjr例如“ranniecardino15”,它应该将它存储到一个变量然后执行一个方法调用。我怎样才能做到这一点?我已经编写了这样的代码,但方法调用“getCurrentLocation”仅在检索到的最后一个孩子上执行。 public void getCurrentChildUser() {    DatabaseReference getuser = FirebaseDatabase.getInstance().getReference().child("Children");    getuser.child(user).orderByChild("CurrentLocation").addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {                childuser = childSnapshot.getKey();                if (childuser != null){                    getCurrentLocation();                }            }        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        }    });}public void getCurrentLocation(){    DatabaseReference getuser = FirebaseDatabase.getInstance().getReference().child("Children");    getuser.child(user).child(childuser).child("CurrentLocation").addListenerForSingleValueEvent(new ValueEventListener() {        @Override        public void onDataChange(DataSnapshot dataSnapshot) {            if(dataSnapshot != null){                currentloc = dataSnapshot.getValue(String.class);                System.out.println("Current Location: "+currentloc);                String split[] = currentloc.split(",");                lat1 = Double.parseDouble(split[0]);                lng1 = Double.parseDouble(split[1]);                System.out.println("Current Latitude: "+lat1+" and Current Longitude: "+lng1);                getSavedLocation();            }        }        @Override        public void onCancelled(DatabaseError databaseError) {}    });}请帮助我:) 提前致谢:)
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

要解决此问题,您需要将getCurrentLocation()方法的声明从:

public void getCurrentLocation(){}

public void getCurrentLocation(String childuser){}

现在你需要onDataChange()像这样从方法内部调用这个方法:

getCurrentLocation(childuser);

看,我已将 thechilduser作为参数传递给 the,getCurrentLocation()因此可以以正确的方式使用它。


查看完整回答
反对 回复 2021-10-27
  • 1 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信