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