Как получить данные из базы данных пожарной базы в режиме реального времени, которая имеет 2 дочерних слоя для listView? - PullRequest
0 голосов
/ 05 апреля 2019

Example of data in real time databse

Как получить данные в папке «События», в которой есть два дочерних элемента? Я новичок в андроид студии ...

Пример кода, как показано ниже:

database = FirebaseDatabase.getInstance();
    ref = database.getReference("Event");
    list = new ArrayList<String>();
    adapter = new ArrayAdapter<String>(this,R.layout.event_info,R.id.eventTitle,list);
    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot ds: dataSnapshot.getChildren())
            {
                eventInfo = ds.getValue(EventInfo.class);
                list.add(eventInfo.getTitle() + " \n " + eventInfo.getAddress() +
                        " \n " + eventInfo.getDescription() + " \n " + eventInfo.getImgURL() +
                        " \n " + eventInfo.getLatitude() + " \n " + eventInfo.getLongitude());
            }

            listView.setAdapter(adapter);
        }

1 Ответ

0 голосов
/ 05 апреля 2019

Когда вы перебираете DataSnapshot.getChildren(), каждый ребенок снова становится DataSnapshot.Таким образом, вы можете зациклить детей этого тоже.Поскольку у вас есть два динамических уровня в вашем JSON, вам нужно два вложенных цикла в вашем коде:

ref = FirebaseDatabase.getInstance().getReference("Event");
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot eventSnapshot: userSnapshot.getChildren()) {
                eventInfo = eventSnapshot.getValue(EventInfo.class);
                Log.d("Event", eventSnapshot.getKey());
                Log.d("Event", eventSnapshot.child("title").getValue(String.class));
            }
        }
    }
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...