Как получить детей более одного раза и сохранить родительский узел - PullRequest
0 голосов
/ 19 декабря 2018

Предположим, что моя база данных имеет следующую структуру:

data
 |___randomId1
 |       |_________randomData1
 |                       |______Key1: value
 |                       |______Key2: value
 |___randomId2
         |_________randomData2
                         |______Key1: value
                         |______Key2: value

И я хочу выполнить итерацию, чтобы получить все значения, а также сохранить идентификатор родителя (randomId1, randomId2).Как я могу пройти через?прямо сейчас у меня есть следующее:

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
               // what to put here to get the values and also save the ids?
        }
    }

Вы видите, что у каждого randomData есть одна и та же карта (Key1 и Key2).

1 Ответ

0 голосов
/ 19 декабря 2018

Чтобы решить эту проблему, вам нужно использовать два вложенных цикла, как показано в следующих строках кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dataRef = rootRef.child("data");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
            String parentKey = dSnapshot.getKey();

            for(DataSnapshot ds : dSnapshot.getChildren()) {
                String key = ds.getKey();

                String key1 = ds.child("Key1").getValue(String.class);
                String key2 = ds.child("Key2").getValue(String.class);
                Log.d(TAG, key1 + " / " + key2);
            }
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
dataRef.addListenerForSingleValueEvent(valueEventListener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...