循环遍历具有用户 ID 的 Firebase 节点,以显示特定的子节点并将值存储在数组中



我正在尝试遍历 Firebase 中的节点,以检索节点中所有用户的特定字段,而不管登录的用户 ID 如何。

  -Geo_code
        -9rsgncjadHFssH
           ChemistName:"Rayan"
           Geo_codes: "25.42,0.1426"
        -yUIoobF5gfhvGFG
           ChemistName: "Mugash"
           Geo_codes: "28.42,0.1426" 
        -JgHF6Yj7feNNGKGBH
           ChemistName: "Stephany" 
           Geo_codes: "30.42,1.1426"
    locate1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                Query query = FirebaseDatabase.getInstance().getReference().child("Geocode");
                query.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    ArrayList<String> code = new ArrayList<>();
                    ArrayList<Float> distances = new ArrayList<Float>();
                    String str[];
                    float distanceInMeters = 0;
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                        String coordinates = snapshot.child("Geo_codes").getValue().toString();
                        code = new ArrayList<>();
                        code.add(coordinates);
                        Log.d(TAG, "All coordinates are" + code);
                    }

我希望在代码 ArrayList 中包含所有Geo_codes节点值

所以

我不知道你用什么geo_codes,我只是用了一个字符串,但这里是pojo

    public class Geo_Code {
    public String ChemistName;
    public String Geo_Codes;
    public Geo_Code(){
    }
    public Geo_Code(String chemistName, String geo_Codes) {
        ChemistName = chemistName;
        Geo_Codes = geo_Codes;
    }
}

这是获取所有化学家名称和Geo_Code的代码。如果您仍然遇到问题,请随时提出任何问题。

   public class MainActivity extends AppCompatActivity {
public List<Geo_Code> geo_codes = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Setting the data with our Pojo class
                //Geo_Code s  = new Geo_Code("Rayan","25.42,0.1426");
                //FirebaseDatabase.getInstance().getReference("Geo_Code").setValue(s);
                FirebaseDatabase.getInstance().getReference("Geo_Code").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //Get our snapshot and add it to a list of Geo_Code
                        Geo_Code geo_code = dataSnapshot.getValue(Geo_Code.class);
                        geo_codes.add(geo_code);
                        //Looping through geo_codes and getting all the data.
                        for(int i=0; i<geo_codes.size(); i++) {
                            String name = geo_codes.get(i).ChemistName;
                            String cordinates = geo_codes.get(i).Geo_Codes;
                        }
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                    }
                });
            }
        });
    }

}
Create a Geo_Code pojo class then add a List<Geo_Code>geo_codeList() = new ArrayList();
in your activity. onDataChange Geo_Code geo_code  = datasnapshot.getValue(Geo_Code.class); geo_codeList.add(geo_code);
 for(int i=0; i<geo_codeList.size(); i++){
String cordinates = geo_codeList.get(i);
         }

最新更新