Jestem nowy firebase
i nosql
bazieJak odzyskać konkretną listę danych z Firebase
Próbuję odzyskać jakieś konkretne dane z Firebase. Mam węzeł universities
i ten węzeł ma wiele unikalnych identyfikatorów jako węzeł, który ma więcej danych do niego. Chcę pobrać name
z każdego węzła.
Proszę spojrzeć na to.
Co próbowałem dotąd: Próbowałem za pomocą addChildEventListener
ale to tylko słucha pierwszego dziecka. Debugowałem go i pokazywałem tylko wartości pierwszego potomka węzła universities
.
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
List<University> university = new ArrayList<>();
Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
Log.d("TAG",dataSnapshot.getValue().toString());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Próbowałem również addValueEventListener
. To nasłuchuje całego węzła i zwraca całe dane, ale nie mogę wyodrębnić dla niego "nazwy", ponieważ zawiera on unikalne identyfikatory.
Proszę mnie we właściwym kierunku.
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
University university = dataSnapshot.getValue(University.class);
List<University> universities = (List<University>) dataSnapshot.getValue(University.class);
*//*List<String> lst = new ArrayList<String>();
for(DataSnapshot dsp : dataSnapshot.getChildren()){
lst.add(dsp.getKey());
}
Log.d("TAG",lst.toString());*//*
Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
*//*List<Object> values = new ArrayList<Object>(td.values());
List<String> list=new ArrayList<String>();
for(int i=0; i<values.size(); i++){
list.add((String) values.get(i));
}*//*
Log.d("TAG", university.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
ok użyłem pierwszej metody. Ta metoda. Przechowuj dane hashMap w liście. Mam na myśli to, że ma teraz 3 indeksy. A każdy indeks zawiera dane typu HashMap. I chcę uzyskać z tego nazwę. jak bym to zrobił? –
Widzę, że sposób użycia w twoim poście jest inny. w moim kodzie (w jednej metodzie), wewnątrz pętli for otrzymasz obiekt Univerty i możesz uzyskać dostęp do właściwości name przez university.name –
dzięki ci, pomógł –