Skip to content

Commit fda5417

Browse files
committed
Fix FirebaseArrayOfObjects$FirebaseArrayOfObjectsOptimized.java being incomprehensible and bugs related to adapters not listening for changes if FirebaseArray.java already had listeners by adding a new method to check if an object is listening for changes.
Signed-off-by: Alex Saveau <[email protected]>
1 parent 327d182 commit fda5417

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ public boolean isListening() {
145145
}
146146
}
147147

148+
/**
149+
* @return true if the provided {@link ChangeEventListener} is listening for changes
150+
*/
151+
public boolean isListening(ChangeEventListener listener) {
152+
synchronized (mListeners) {
153+
return mListeners.contains(listener);
154+
}
155+
}
156+
148157
@Override
149158
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
150159
int index = 0;

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,6 @@ public String toString() {
174174
protected static class FirebaseArrayOfObjectsOptimized<E> extends FirebaseArrayOfObjects<E>
175175
implements ChangeEventListener, SubscriptionEventListener {
176176
protected List<E> mObjects = new ArrayList<>();
177-
protected boolean mIsListening = true;
178-
protected boolean mAddedListener = false;
179177

180178
public FirebaseArrayOfObjectsOptimized(FirebaseArray snapshots, Class<E> modelClass) {
181179
super(snapshots, modelClass);
@@ -211,20 +209,14 @@ public void onSubscriptionRemoved() {
211209
FirebaseArray snapshots = (FirebaseArray) mSnapshots;
212210
if (!snapshots.isListening()) {
213211
snapshots.removeChangeEventListener(this);
214-
mIsListening = false;
215-
mAddedListener = false;
216212
}
217213
}
218214

219215
@Override
220216
public void onSubscriptionAdded() {
221-
if (mAddedListener) {
222-
mIsListening = true;
223-
mAddedListener = false;
224-
} else if (!mIsListening) {
225-
((FirebaseArray) mSnapshots).addChangeEventListener(this);
226-
mIsListening = true;
227-
mAddedListener = true;
217+
FirebaseArray snapshots = (FirebaseArray) mSnapshots;
218+
if (!snapshots.isListening(this)) {
219+
snapshots.addChangeEventListener(this);
228220
}
229221
}
230222

database/src/main/java/com/firebase/ui/database/adapter/FirebaseListAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public FirebaseListAdapter(Activity activity,
7070

7171
@Override
7272
public void startListening() {
73-
if (!mSnapshots.isListening()) {
73+
if (!mSnapshots.isListening(this)) {
7474
mSnapshots.addChangeEventListener(this);
7575
}
7676
}

database/src/main/java/com/firebase/ui/database/adapter/FirebaseRecyclerAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public FirebaseRecyclerAdapter(Class<T> modelClass,
7575

7676
@Override
7777
public void startListening() {
78-
if (!mSnapshots.isListening()) {
78+
if (!mSnapshots.isListening(this)) {
7979
mSnapshots.addChangeEventListener(this);
8080
}
8181
}

0 commit comments

Comments
 (0)