我正在构建一个需要从某个父节点检索所有子节点的应用程序,并希望对检索到的每个子节点执行方法调用。这是我当前的数据库:我想调用一个孩子的所有孩子,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()
因此可以以正确的方式使用它。
添加回答
举报
0/150
提交
取消