Получение данных из базы данных Firebase Realtime - PullRequest
0 голосов
/ 13 сентября 2018

Это моя база данных Firebase:

Firebase

Это мой код для извлечения данных в виде списка, я хочу получить все данные из Tehsil_hin и Tid с определенным идентификатором в двух разных массивах.

 FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("Tehsil");

     Query query = myRef.orderByChild("DID").equalTo(did);
     query.addValueEventListener(new ValueEventListener() 
     {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
        for (DataSnapshot postSnapshot: snapshot.getChildren()) 
        {
            areas.add(snapshot.child("Tehsil_Hin").getValue(String.class));
            areasid.add(snapshot.child("TID").getValue(int.class));

        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    //System.out.println("The read failed: " + firebaseError.getMessage());
        }
    });

Я не получаю данные от этого

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Если вы хотите получить доступ к данным с этих дочерних узлов, вместо использования query вы можете просто использовать DatabaseReference, а с помощью orderByChild() и equalTo() можно получить доступ к данным, имеющим только то значение, которое вы хотите.

В коде это выглядит примерно так:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Tehsil");

// specificTID is the value which you want to compare to the value stored in database

rootRef.orderByChild("TID").equalTo(specificTID).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for(DataSnapshot data: dataSnapshot.getChildren()){
                          // use array1.add to store value in your arrayList

                        }
                    }

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

                    }
                });

Теперь вам нужно обновить значение до ArrayAdapter и установить его на listView, чтобы иметь возможность отображать данные.

ArrayAdapter adapter = new ArrayAdapter(Main2Activity.this, android.R.layout.simple_list_item_1, array);
                listView.setAdapter(adapter);

Вы можете сделать это с обоими детьми и сохранить значения в разных массивах.Вы также можете использовать разные listViews для отображения данных.

0 голосов
/ 14 сентября 2018

Вы никогда не уведомите адаптер об обновлении данных, поэтому список обновлений не будет обновлен

Вам необходимо уведомить адаптер вне цикла, предполагая, что цикл действительно введен (пожалуйста, добавьте операторы журнала для дальнейшей отладки)

Вы также должны оставить комментарий для тела метода ошибок, потому что это также область, где вы ничего не видите

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