Я пытаюсь перебрать узел в firebase, чтобы получить определенное поле в узле для всех пользователей, независимо от того, вошли ли они в userID.

  -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);
                    }

Я ожидаю иметь все значения узла Geo_codes в коде ArrayList

0
John mugambi 17 Апр 2019 в 00:09

2 ответа

Лучший ответ

Так что я не знаю, что вы используете для 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;
    }
}

А вот код для получения всех ChemistName и 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) {

                    }
                });
            }
        });
    }


}
0
LinuxMasterRace 17 Апр 2019 в 12:33
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);
         }
0
LinuxMasterRace 16 Апр 2019 в 21:25