0
我正在嘗試編寫一個包含簡單ArrayList的Firebase應用程序,該列表將用作列表視圖的提要。 爲了做到這一點,我有一個負責FirebaseConnection的單身人士,並會取數據。這些數據然後被列入清單。問題是數據首先被列爲空列表,然後數據完成檢索。你可能對我有什麼解決方案?在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);
感謝幫助,但因爲我得到的SingletonClass的火力地堡數據,而適配器的活動是有通知的方式而不必將其作爲方法參數傳遞(由於在傳遞方法時尚未設置適配器,因此這是不可能的)。或者,這是不好的做法,在單身人士班呢? – John
在這種情況下,您需要將適配器和列表傳遞給您的實用程序方法。我在我的答案中更新了代碼。 –
謝謝你一堆:)作品像一個魅力 – John