Switching ID resolution to LoaderManager.
Change-Id: I87e53457f9d248597ddb5b24af805f1367e8a53b
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 1e6f18e..05f18ed 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -17,6 +17,7 @@
import com.android.contacts.R;
+import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
@@ -40,6 +41,29 @@
private OnContactBrowserActionListener mListener;
+ private LoaderCallbacks<Cursor> mIdLoaderCallbacks = new LoaderCallbacks<Cursor>() {
+
+ @Override
+ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+ return new CursorLoader(getContext(),
+ mSelectedContactUri,
+ new String[] { Contacts._ID },
+ null,
+ null,
+ null);
+ }
+
+ @Override
+ public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+ long selectedId = ListView.INVALID_ROW_ID;
+ if (data.moveToFirst()) {
+ selectedId = data.getLong(0);
+ }
+ getAdapter().setSelectedContactId(selectedId);
+ return;
+ }
+ };
+
@Override
public void restoreSavedState(Bundle savedState) {
super.restoreSavedState(savedState);
@@ -61,39 +85,11 @@
public void onStart() {
super.onStart();
if (mSelectedContactUri != null && isSelectionVisible()) {
- startLoading(SELECTED_ID_LOADER, null);
+ getLoaderManager().initLoader(SELECTED_ID_LOADER, null, mIdLoaderCallbacks);
}
}
@Override
- protected Loader<Cursor> onCreateLoader(int id, Bundle args) {
- if (id == SELECTED_ID_LOADER) {
- return new CursorLoader(getContext(),
- mSelectedContactUri,
- new String[] { Contacts._ID },
- null,
- null,
- null);
- }
-
- return super.onCreateLoader(id, args);
- }
-
- @Override
- protected void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- if (loader.getId() == SELECTED_ID_LOADER) {
- long selectedId = ListView.INVALID_ROW_ID;
- if (data.moveToFirst()) {
- selectedId = data.getLong(0);
- }
- getAdapter().setSelectedContactId(selectedId);
- return;
- }
-
- super.onLoadFinished(loader, data);
- }
-
- @Override
protected void prepareEmptyView() {
if (isSearchMode()) {
return;
@@ -121,13 +117,7 @@
|| (mSelectedContactUri != null && !mSelectedContactUri.equals(uri))) {
this.mSelectedContactUri = uri;
if (mSelectedContactUri != null) {
- CursorLoader loader = (CursorLoader)getLoader(SELECTED_ID_LOADER);
- if (loader == null) {
- startLoading(SELECTED_ID_LOADER, null);
- } else {
- loader.setUri(mSelectedContactUri);
- loader.forceLoad();
- }
+ getLoaderManager().restartLoader(SELECTED_ID_LOADER, null, mIdLoaderCallbacks);
}
}
}