@@ -203,20 +203,18 @@ protected void onKeyMoved(DataSnapshot data, int index, int oldIndex) {
203
203
if (isKeyAtIndex (key , oldIndex )) {
204
204
DataSnapshot snapshot = removeData (oldIndex );
205
205
mDataSnapshots .add (index , snapshot );
206
- notifyChangeEventListeners (ChangeEventListener .EventType .MOVED ,
207
- snapshot ,
208
- index ,
209
- oldIndex );
206
+ notifyChangeEventListeners (EventType .MOVED , snapshot , index , oldIndex );
210
207
}
211
208
}
212
209
213
210
protected void onKeyRemoved (DataSnapshot data , int index ) {
214
211
DatabaseReference removeRef = mJoinResolver .onDisjoin (data );
215
- removeRef .removeEventListener (mRefs .remove (removeRef ));
212
+ ValueEventListener listener = mRefs .remove (removeRef );
213
+ if (listener != null ) removeRef .removeEventListener (listener );
216
214
217
215
if (isKeyAtIndex (data .getKey (), index )) {
218
216
DataSnapshot snapshot = removeData (index );
219
- notifyChangeEventListeners (ChangeEventListener . EventType .REMOVED , snapshot , index );
217
+ notifyChangeEventListeners (EventType .REMOVED , snapshot , index );
220
218
}
221
219
}
222
220
@@ -258,20 +256,20 @@ public void onDataChange(DataSnapshot snapshot) {
258
256
int index = getIndexForKey (key );
259
257
260
258
if (snapshot .getValue () != null ) {
261
- if (!isKeyAtIndex (key , index )) {
262
- // We don't already know about this data, add it
263
- mDataSnapshots .add (index , snapshot );
264
- notifyChangeEventListeners (ChangeEventListener .EventType .ADDED , snapshot , index );
265
- } else {
259
+ if (isKeyAtIndex (key , index )) {
266
260
// We already know about this data, just update it
267
261
updateData (index , snapshot );
268
- notifyChangeEventListeners (ChangeEventListener .EventType .CHANGED , snapshot , index );
262
+ notifyChangeEventListeners (EventType .CHANGED , snapshot , index );
263
+ } else {
264
+ // We don't already know about this data, add it
265
+ mDataSnapshots .add (index , snapshot );
266
+ notifyChangeEventListeners (EventType .ADDED , snapshot , index );
269
267
}
270
268
} else {
271
269
if (isKeyAtIndex (key , index )) {
272
270
// This data has disappeared, remove it
273
271
removeData (index );
274
- notifyChangeEventListeners (ChangeEventListener . EventType .REMOVED , snapshot , index );
272
+ notifyChangeEventListeners (EventType .REMOVED , snapshot , index );
275
273
} else {
276
274
// Data does not exist
277
275
mJoinResolver .onJoinFailed (index , snapshot );
0 commit comments