Я пытаюсь написать приложение firebase, содержащее простой ArrayList, который будет служить в качестве фида для представления списка. Для этого у меня есть синглтон, который заботится о FirebaseConnection и будет извлекать данные. Затем эти данные будут отправлены в список. Проблема состоит в том, что данные сначала подаются в список как null, после чего данные завершаются. Какие-нибудь решения для меня?Возвращение значения в Firebase onDataChange
Вот мой код:
public ArrayList<Event> getAllEventsOnFirebase() {
final ArrayList<Event> events = new ArrayList<Event>();
DatabaseReference eventsTable = getDatabaseTableWith(Constants.tableEvents);
eventsTable.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
HashMap<String, Object> event = (HashMap<String, Object>) postSnapshot.getValue();
String eventId = (String) event.get(Constants.taEventUUID);
String eventName = (String) event.get(Constants.taEventName);
String eventAddress = (String) event.get(Constants.taEventAddress);
Event newEvent = new Event(eventId, eventName, eventAddress);
events.add(newEvent);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return events;
}
Кроме того, как я заполнить список выглядит следующим образом:
eventsArray = FirebaseConnection.getInstance().getAllEventsOnFirebase();
EventListAdapter adapter = new EventListAdapter(this, eventsArray);
eventsListView.setAdapter(adapter);
спасибо, что помогает, но так как я получаю данные Firebase в виде SingletonClass, в то время как адаптер в деятельности есть способ, чтобы информировать адаптера без необходимости передавать его как параметр метода (это будет невозможно, так как адаптер еще не установлен во время прохождения метода). Или это плохая практика, чтобы сделать это в классе Singleton? – John
В этом случае вам необходимо передать адаптер и перечислить его в свой метод. Я обновил код в своем ответе. –
благодарю вас за кучу :) работает как шарм – John