Skip to content

Commit 6eba74c

Browse files
SUPERCILEXsamtstern
authored andcommitted
Add call to onDataChanged when adding first listener (#736)
1 parent 2b8a8ac commit 6eba74c

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

database/src/main/java/com/firebase/ui/database/ObservableSnapshotArray.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public abstract class ObservableSnapshotArray<E> extends AbstractList<DataSnapsh
2020
protected final List<ChangeEventListener> mListeners = new CopyOnWriteArrayList<>();
2121
protected final SnapshotParser<E> mParser;
2222

23+
private boolean mHasDataChanged = false;
24+
2325
/**
2426
* Create an ObservableSnapshotArray where snapshots are parsed as objects of a particular
2527
* class.
@@ -53,6 +55,9 @@ public ChangeEventListener addChangeEventListener(@NonNull ChangeEventListener l
5355
for (int i = 0; i < size(); i++) {
5456
listener.onChildChanged(ChangeEventListener.EventType.ADDED, get(i), i, -1);
5557
}
58+
if (mHasDataChanged) {
59+
listener.onDataChanged();
60+
}
5661

5762
return listener;
5863
}
@@ -63,6 +68,11 @@ public ChangeEventListener addChangeEventListener(@NonNull ChangeEventListener l
6368
@CallSuper
6469
public void removeChangeEventListener(@NonNull ChangeEventListener listener) {
6570
mListeners.remove(listener);
71+
72+
// Reset mHasDataChanged if there are no more listeners
73+
if (!isListening()) {
74+
mHasDataChanged = false;
75+
}
6676
}
6777

6878
/**
@@ -95,6 +105,7 @@ protected final void notifyChangeEventListeners(ChangeEventListener.EventType ty
95105
}
96106

97107
protected final void notifyListenersOnDataChanged() {
108+
mHasDataChanged = true;
98109
for (ChangeEventListener listener : mListeners) {
99110
listener.onDataChanged();
100111
}

0 commit comments

Comments
 (0)