在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);
拉风的咖菲猫
LEATH