Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.List;
- public interface FirebaseCallback {
- void onCallback (List<Sentinel> list);
- }
- public class SentinelStorage { // Singleton class
- public static SentinelStorage sentinelStorage;
- private List<Sentinel> sentinelsList;
- ...
- public List<Sentinel> readSentinelsListFromDB(DatabaseReference dbRef, final FirebaseCallback firebaseCallback){
- final Sentinel sentinel = new Sentinel();
- ValueEventListener valueEventListener = new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- GenericTypeIndicator<Map<String, Object>> t = new GenericTypeIndicator<Map<String, Object>>(){};
- Map<String, Object> sentinelsMap = dataSnapshot.getValue(t);
- for (Map.Entry<String,Object> entry : sentinelsMap.entrySet()){
- // convert every node of Map to Sentinel instance
- sentinelsList.add(sentinel.mapToSentinel((Map)entry.getValue()));
- }
- firebaseCallback.onCallback(sentinelsList);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.d(TAG,databaseError.getMessage());
- }
- };
- dbRef.addListenerForSingleValueEvent(valueEventListener);
- return sentinelsList; // here sentinelsList still is not empty
- }
- ...
- }
- public class ActivitySentinel extends BaseActivity {
- RecyclerView mRecyclerView;
- SentinelViewAdapter adapter;
- private final String DBSentintelName = "db_sentinel";
- Sentinel sentinel = new Sentinel();
- FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
- DatabaseReference dbRef = mFirebaseDatabase.getReference(DBSentintelName);
- List<Sentinel> list = new ArrayList<>(); // must be passed to SentinelViewAdapter
- SentinelStorage sentinelStorage; // singletone that contain a List<Sentinel>
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- ...
- sentinelStorage = SentinelStorage.get(); // get the only instance of SentinelStorage
- // exactly this list below makes me nervous
- list = sentinelStorage.readSentinelsListFromDB(dbRef, new FirebaseCallback() {
- @Override
- public void onCallback(List<Sentinel> lst) {
- list = lst;
- Log.d(TAG, "onCallback.Is list empty "+list.isEmpty());// not EMPTY
- }
- });
- Log.d(TAG, " Is list empty :: "+list.isEmpty()); // TRUE - list is EMPTY
- adapter = new SentinelViewAdapter(list);
- mRecyclerView.setAdapter(adapter);
- ...
- }
- }
Add Comment
Please, Sign In to add comment