Fixing cache reset in GroupingListAdapter (Call Log)

Bug: 2479978
Change-Id: I70a17d13cedbd8986cd6dca2b218c7180dc17470
diff --git a/src/com/android/contacts/GroupingListAdapter.java b/src/com/android/contacts/GroupingListAdapter.java
index 9d494a3..5937a6d 100644
--- a/src/com/android/contacts/GroupingListAdapter.java
+++ b/src/com/android/contacts/GroupingListAdapter.java
@@ -19,7 +19,6 @@
 import com.android.internal.util.ArrayUtils;
 
 import android.content.Context;
-import android.database.CharArrayBuffer;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.database.DataSetObserver;
@@ -163,6 +162,9 @@
             mCursor.close();
         }
         mCursor = cursor;
+        resetCache();
+        findGroups();
+
         if (cursor != null) {
             cursor.registerContentObserver(mChangeObserver);
             cursor.registerDataSetObserver(mDataSetObserver);
@@ -173,8 +175,6 @@
             notifyDataSetInvalidated();
         }
 
-        resetCache();
-        findGroups();
     }
 
     public Cursor getCursor() {
@@ -418,6 +418,10 @@
     }
 
     public Object getItem(int position) {
+        if (mCursor == null) {
+            return null;
+        }
+
         obtainPositionMetadata(mPositionMetadata, position);
         if (mCursor.moveToPosition(mPositionMetadata.cursorPosition)) {
             return mCursor;
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index d12f9dd..a195971 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -758,10 +758,7 @@
     protected void onDestroy() {
         super.onDestroy();
         mAdapter.stopRequestProcessing();
-        Cursor cursor = mAdapter.getCursor();
-        if (cursor != null && !cursor.isClosed()) {
-            cursor.close();
-        }
+        mAdapter.changeCursor(null);
     }
 
     @Override