在Firebase侦听器中设置Singleton属性值
public class BookSingleton {private static BookSingleton model;private ArrayList<BookMark> bookmarks = new ArrayList<BookMark>();
public static BookSingleton getModel(){
if (model == null)
{
throw new IllegalStateException("The model has not been initialised yet.");
}
return model;}public ArrayList<Bookmark> theBookmarkList(){
return this.bookmarks;}public void setBookmarks(ArrayList<Bookmark> bookmarks){
this.bookmarks = bookmarks;}public void loadModelWithDataFromFirebase(){
Firebase db = new Firebase(//url);
Firebase bookmarksRef = fb.child(//access correct child);
final ArrayList<Bookmark> loadedBookmarks = new ArrayList<Bookmark>();
bookmarksRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//getting all properties from firebase...
Bookmark bookmark = new Bookmark(//properties here);
loadedBookmarks.add(bookmark);
}
}
//bookmarks still exist here at this point
setBookmarks(loadedBookmarks);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});MainActivity
public class MainActivity extends AppCompatActivity {private BookSingleton theModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the model
theModel = BookSingleton.getModel(this);
//manually setting this works
// ArrayList<Book> bookSamples = new ArrayList<Book>;
// bookSamples.add(aBookSample);
theModel.loadModelWithSampleData(bookSamples);
慕的地8271018
拉风的咖菲猫
LEATH
随时随地看视频慕课网APP