как получить первый дочерний узел в базе данных realtimedatabase - PullRequest
1 голос
/ 26 марта 2019

my database in realtimedatabase

Я пытался получить только данные этого ребенка и показать их в виде списка путем подстроки от начального слова до [to] слова, используя addValueEventListener, но во всех случаях он получает ошибку в методе onDataChange ...

я пытался получить эти данные по этому коду

FirebaseDatabase.getInstance().getReference().child("chats").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for(DataSnapshot ds : dataSnapshot.getChildren()) {
                        if (ds.getValue().toString().contains(getIntent().getStringExtra("displayName"))) {
                            chat_childs += ds.getValue().toString() + "\n";
                            String doctorName = chat_childs.substring(0, chat_childs.lastIndexOf("to"));
                            allDoctorsModels.add(new AllDoctorsModel(doctorName, "", ""));
                        }
                    }
                    allDoctorsAdapter = new AllDoctorsAdapter(patient_message.this,allDoctorsModels,getIntent().getStringExtra("displayName"));
                    recyclerView.setAdapter(allDoctorsAdapter);
                    progressDialog.dismiss();
                }

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

                }
            });

1 Ответ

1 голос
/ 26 марта 2019

Чтобы получить первого ребенка Doc Ahmed Rafaat to Pat Ahmed El-Nakib, сделайте следующее:

FirebaseDatabase.getInstance().getReference().child("chats").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                  String key = ds.getKey();
                  if(key.contains("Doc Ahmed Rafaat to Pat Ahmed El-Nakib")
                   {
                      String doctorName = key.subString(4,16);
                      allDoctorsModels.add(new AllDoctorsModel(doctorName, "", ""));
                   }
            }

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

            }
        });

Первый цикл внутри прямого потомка chats, затем извлечение всех ключей и проверка, содержит ли ключ Doc Ahmed Rafaat to Pat Ahmed El-Nakib, затем, используя subString в переменной key, вы можете получить имя Ahmed Rafaat.

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