@@ -203,20 +203,18 @@ protected void onKeyMoved(DataSnapshot data, int index, int oldIndex) {
203203 if (isKeyAtIndex (key , oldIndex )) {
204204 DataSnapshot snapshot = removeData (oldIndex );
205205 mDataSnapshots .add (index , snapshot );
206- notifyChangeEventListeners (ChangeEventListener .EventType .MOVED ,
207- snapshot ,
208- index ,
209- oldIndex );
206+ notifyChangeEventListeners (EventType .MOVED , snapshot , index , oldIndex );
210207 }
211208 }
212209
213210 protected void onKeyRemoved (DataSnapshot data , int index ) {
214211 DatabaseReference removeRef = mJoinResolver .onDisjoin (data );
215- removeRef .removeEventListener (mRefs .remove (removeRef ));
212+ ValueEventListener listener = mRefs .remove (removeRef );
213+ if (listener != null ) removeRef .removeEventListener (listener );
216214
217215 if (isKeyAtIndex (data .getKey (), index )) {
218216 DataSnapshot snapshot = removeData (index );
219- notifyChangeEventListeners (ChangeEventListener . EventType .REMOVED , snapshot , index );
217+ notifyChangeEventListeners (EventType .REMOVED , snapshot , index );
220218 }
221219 }
222220
@@ -258,20 +256,20 @@ public void onDataChange(DataSnapshot snapshot) {
258256 int index = getIndexForKey (key );
259257
260258 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 )) {
266260 // We already know about this data, just update it
267261 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 );
269267 }
270268 } else {
271269 if (isKeyAtIndex (key , index )) {
272270 // This data has disappeared, remove it
273271 removeData (index );
274- notifyChangeEventListeners (ChangeEventListener . EventType .REMOVED , snapshot , index );
272+ notifyChangeEventListeners (EventType .REMOVED , snapshot , index );
275273 } else {
276274 // Data does not exist
277275 mJoinResolver .onJoinFailed (index , snapshot );
0 commit comments