Присоединиться к базе данных Firebase Realtime с Java? - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь объединить два узла с помощью firebase в java, но я не могу связать все данные и правильно отобразить их в виде. Любое решение?

Это данные в базе данных:

  1. Person
    • 66db3d6a-c6cf-4577-a857-eca22cd55403
      • name: " aaa "
      • фамилия:" bbb "
      • почта:" john@hotmail.com "
      • id:" 66db3d6a-c6cf-4577-a857-eca22cd55403 "
  2. Пользователь
    • 4ad0c3db-a5b1-40bb-bfc1-35c15ec5af9c
      • nameUser: "john123"
      • пароль: "* ***** "
      • idPerson:" 66db3d6a-c6cf-4577-a857-eca22cd55403 "
      • idUser:" 4ad0c3db-a5b1-40bb-bfc1-35c15ec5af9 c "

Это мой код:

private void listAll(){

 Map<String, String> valuesMapJoin = new HashMap<>();

         databaseReference.child("Person").orderByKey().addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){

                     Map<String, String> valuesMapPerson = 
                    (HashMap<String,String>)dataSnapshot1.getValue();

                    String idPerson = valuesMapPerson.get("id");
                    String name = valuesMapPersona.get("name");
                    String surname = valuesMapPersona.get("surname");
                    String surname = valuesMapPersona.get("mail");

           databaseReference.child("User").orderByKey().equalTo(idPerson).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {


                                Map<String, String> valuesMapUser = (HashMap<String, 
                                String>)dataSnapshot1.getValue();
                                String nameUser = valuesMapUsuario.get("nameUser");
                                String password = valuesMapUsuario.get("password");

                                listDataJoin.add(name + "-" + sourname + "-" + mail + "-" + nameUser + "- 
                                " + password);
                                arrayAdapter = new ArrayAdapter<String>(MainActivity.this, 
                                android.R.layout.simple_list_item_1, listDatosJoin);
                                listJoin.setAdapter(arrayAdapter);

                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

    }

1 Ответ

1 голос
/ 01 мая 2020
private void listAll(){

Map<String, String> valuesMapJoin = new HashMap<>();

     databaseReference.child("Person").orderByKey().addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){

                 Map<String, String> valuesMapPerson = 
                (HashMap<String,String>)dataSnapshot1.getValue();

                String idPerson = valuesMapPerson.get("id");
                String name = valuesMapPersona.get("name");
                String surname = valuesMapPersona.get("surname");
                String surname = valuesMapPersona.get("mail");

       databaseReference.child("User").orderByKey().equalTo(idPerson).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {


                            Map<String, String> valuesMapUser = (HashMap<String, 
                            String>)dataSnapshot1.getValue();
                            String nameUser = valuesMapUsuario.get("nameUser");
                            String password = valuesMapUsuario.get("password");

                            listDataJoin.add(name + "-" + sourname + "-" + mail + "-" + nameUser + "- 
                            " + password);


                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

            }

            arrayAdapter = new ArrayAdapter<String>(MainActivity.this, 
               android.R.layout.simple_list_item_1, listDatosJoin);
               listJoin.setAdapter(arrayAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

Используйте приведенный выше фрагмент кода. Основная проблема в том, что у вас внутри установлен адаптер для l oop, поэтому ваш код не работает идеально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...