Mam problem z pobraniem listy z bazy Firebase. Nie mam problemów z przechowywaniem, ale jak tylko próbuję rzucić dataSnapshot.getValue ArrayList(), aby moje awarii aplikacji, dając wyjątek:Jak odzyskać obiekt listy z bazy ogniowej w systemie Android
HashMap nie można rzutować na ArrayList
Ale kiedy próbowałem rzucić go do HashMap, ale także awarie, dając wyjątek:
ArrayList nie można rzutować na HashMap
Potrzebujesz pomocy! Oto kod, który tworzy problem:
Fire.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<TaskDes> td = (ArrayList<TaskDes>) dataSnapshot.getValue()
notifyDataSetChanged();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Chcę odzyskać wszystkie dane w Firebase jako jedna lista. W TaskDes klasa zawiera trzy pola:
class TaskDes { // definition
boolean done
String taskDescription
String taskTitle
}
Niestety nie ma wystarczająco dużo kod tutaj mi pomóc rozwiązywać problemy. Z pozytywnej strony: przykładowa aplikacja AndroidChat z Firebase robi wszystko, czego szukasz i niewiele więcej. Zajrzyj tutaj: https://github.com/firebase/AndroidChat/tree/master/app/src/main/java/com/firebase/androidchat. Niedawno wyjaśniłem trochę o jego wewnętrznych cechach w Grupie dyskusyjnej Google: https://groups.google.com/d/msg/firebase-talk/OCoQPvpgl1U/Nli_OywG7LYJ –
Dzięki temu spróbuję, kolejna rzecz, o którą chcę zapytać jeśli przechowuję hashmap na bazie ogniowej, to podczas pobierania go z firebase mogę bezpośrednio rzucić datasnapshot.getValue() na hashmap ?? –
Tak, to jest możliwe. Ale tylko wtedy, gdy poprawnie modelujesz klasę 'Task'. Spójrz na przykład. Twoje 'Zadanie' powinno wyglądać jak https://github.com/firebase/AndroidChat/blob/master/app/src/main/java/com/firebase/androidchat/Chat.java –