/* $Id: $ */ package com.oreilly.demo.android.pa.contactviewer; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; /** * ContactDetailsLoader * Load contact details from a cursor */ class ContactDetailsLoader implements LoaderManager.LoaderCallbacks<Cursor> { private final ContactDetails details; private final Activity act; private final Uri uri; private final String sel; private final String rec; private final String[] from; private final int[] to; private Cursor cursor; public ContactDetailsLoader( ContactDetails details, Activity act, Uri uri, String sel, String rec, String[] from, int[] to) { this.details = details; this.act = act; this.uri = uri; this.sel = sel; this.rec = rec; this.from = from; this.to = to; } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { return new CursorLoader( act, uri, from, sel + " = ?", new String[] { rec }, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { if (0 >= data.getCount()) { return; } cursor = data; populateFields(); } @Override public void onLoaderReset(Loader<Cursor> loader) { cursor = null; } public void populateFields() { if (null == cursor) { return; } cursor.moveToFirst(); details.populateFields(cursor, from, to); } }