Özel Yükleyici sınıfı yazmanız gerekecektir. Örneğin:
çağıran aktivitesi veya fragmanları
public class FooLoader extends AsyncTaskLoader {
Context context;
public FooLoader(Context context) {
super(context);
this.context = context;
}
@Override
public Cursor loadInBackground() {
Log.d(TAG, "loadInBackground");
YourDatabase dbHelper = new YourDataBase(context);
SQLiteDatabase db= dbHelper.getReadableDatabase();
/*** create a custom cursor whether it is join of multiple tables or complex query**/
Cursor cursor = db.query(<TableName>, null,null, null, null, null, null, null);
return cursor;
}
}
onCreate()
yöntem, özel yükleyici sınıf aramak gerekir:
public class MyFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate():" + mContent);
Loader loader = getLoaderManager().initLoader(0, null, this);
loader.forceLoad();
}
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
Log.d(TAG, "onCreateLoader()") ;
return new FooLoader(getActivity());
}
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
Log.d(TAG, "onLoadFinished");
}
@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) {
}
}
Üzgünüz ama "çoklu ContentProviders", "app'ımın db'sindeki birden fazla tablo" ile aynı değil. ContentProviders farklı uygulamalardan olabilir, bu durumda çözümünüz bir çözüm değildir. (Necroposting, ama belki birinin bir ipucu var) – Giszmo