Guest User

Untitled

a guest
Apr 26th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. import java.util.List;
  2. public interface FirebaseCallback {
  3. void onCallback (List<Sentinel> list);
  4. }
  5.  
  6. public class SentinelStorage { // Singleton class
  7. public static SentinelStorage sentinelStorage;
  8. private List<Sentinel> sentinelsList;
  9.  
  10. ...
  11. public List<Sentinel> readSentinelsListFromDB(DatabaseReference dbRef, final FirebaseCallback firebaseCallback){
  12. final Sentinel sentinel = new Sentinel();
  13. ValueEventListener valueEventListener = new ValueEventListener() {
  14. @Override
  15. public void onDataChange(DataSnapshot dataSnapshot) {
  16. GenericTypeIndicator<Map<String, Object>> t = new GenericTypeIndicator<Map<String, Object>>(){};
  17. Map<String, Object> sentinelsMap = dataSnapshot.getValue(t);
  18. for (Map.Entry<String,Object> entry : sentinelsMap.entrySet()){
  19. // convert every node of Map to Sentinel instance
  20. sentinelsList.add(sentinel.mapToSentinel((Map)entry.getValue()));
  21. }
  22. firebaseCallback.onCallback(sentinelsList);
  23. }
  24. @Override
  25. public void onCancelled(DatabaseError databaseError) {
  26. Log.d(TAG,databaseError.getMessage());
  27. }
  28. };
  29. dbRef.addListenerForSingleValueEvent(valueEventListener);
  30. return sentinelsList; // here sentinelsList still is not empty
  31. }
  32. ...
  33. }
  34.  
  35. public class ActivitySentinel extends BaseActivity {
  36. RecyclerView mRecyclerView;
  37. SentinelViewAdapter adapter;
  38. private final String DBSentintelName = "db_sentinel";
  39. Sentinel sentinel = new Sentinel();
  40. FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
  41. DatabaseReference dbRef = mFirebaseDatabase.getReference(DBSentintelName);
  42. List<Sentinel> list = new ArrayList<>(); // must be passed to SentinelViewAdapter
  43. SentinelStorage sentinelStorage; // singletone that contain a List<Sentinel>
  44. @Override
  45. protected void onCreate(@Nullable Bundle savedInstanceState) {
  46. ...
  47. sentinelStorage = SentinelStorage.get(); // get the only instance of SentinelStorage
  48. // exactly this list below makes me nervous
  49. list = sentinelStorage.readSentinelsListFromDB(dbRef, new FirebaseCallback() {
  50. @Override
  51. public void onCallback(List<Sentinel> lst) {
  52. list = lst;
  53. Log.d(TAG, "onCallback.Is list empty "+list.isEmpty());// not EMPTY
  54. }
  55. });
  56.  
  57. Log.d(TAG, " Is list empty :: "+list.isEmpty()); // TRUE - list is EMPTY
  58. adapter = new SentinelViewAdapter(list);
  59. mRecyclerView.setAdapter(adapter);
  60. ...
  61. }
  62. }
Add Comment
Please, Sign In to add comment