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

我正在构建一个需要从某个父节点检索所有子节点的应用程序,并希望对检索到的每个子节点执行方法调用。


这是我当前的数据库:

http://img1.mukewang.com/617914ed000171c005230230.jpg


我想调用一个孩子的所有孩子,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) {}

    });

}

请帮助我:) 提前致谢:)


不负相思意
浏览 141回答 1
1回答

忽然笑

要解决此问题,您需要将getCurrentLocation()方法的声明从:public void getCurrentLocation(){}到public void getCurrentLocation(String childuser){}现在你需要onDataChange()像这样从方法内部调用这个方法:getCurrentLocation(childuser);看,我已将 thechilduser作为参数传递给 the,getCurrentLocation()因此可以以正确的方式使用它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java