Проблема получить похожий дочерний элемент firebase - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу получить только дату и все элементы даты одновременно и сохранить их в массиве в базе данных, как показано ниже.

enter image description here

Я использовал следующий код для извлечения, но не смог.

    public void showData(View view) {

    final ArrayList<String> date = new ArrayList<>();
    firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Date");

    firebaseDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            date.add(dataSnapshot.getValue().toString());
            display.setText(dataSnapshot.getValue().toString());
        }

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

        }
    });
}

Пожалуйста, помогите найти решение для этого.

Ответы [ 2 ]

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

Как сказал @PeterHaddad в предыдущем ответе, последовательность доступа к данным, которые вы взяли, неверна.Вы можете попробовать этот способ, если пока ничего не помогло.

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Names").orderByChild("Date").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
       for(DataSnapshot ds: dataSnapshot.getChildren()){
        date.add(ds.getValue(String.class));
           }
    }

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

    }
});

//Also as you've told that code is not working, please tell, what exactly is not working
0 голосов
/ 07 сентября 2018

Неверная ссылка на базу данных, вы должны перейти от верхнего узла к узлу даты.

Изменить это:

firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Date");

в это:

firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name");
 firebaseDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
       for(DataSnapshot datas: dataSnapshot.getChildren()){
        date.add(datas.child("Date").getValue().toString());
           }
    }

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

    }
});

Так как вы хотите получить all Date, поместите ссылку на базовую базу данных в узел Name и зациклите внутри имен, чтобы иметь возможность получить все даты.


Если вы хотите получить дату одного пользовательского примера Ravi, то вам не нужно делать циклы, вы можете сделать следующее:

firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name").child("Ravi").child("Date");

firebaseDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    date.add(dataSnapshot.getValue().toString());
       }
}

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

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