Wie kann ich den Cursor von einem CursorLoader aus aktualisieren?

Also habe ich meineMainDisplayActivity was beides umsetztActivity undLoaderManager.LoaderCallbacks<Cursor>. Hier habe ich AListView, die ich mit Agenda-Informationen fülle, die ich mithilfe eines ContentProviders aus meiner Datenbank erhalte. Ich habe auch einGridView Welches ist ein Kalender. Ich habe es beim Anklicken einer Zelle so eingestellt, dass die Agenda mit dem angeklickten Tag aktualisiert wird. Mein Problem ist, dass bei der Wiederverwendung des Loader, den ich in erstellt habeonCreate() Innerhalb von setOnItemClickListener () werden die Informationen mit dem neuen Cursor, den ich erstelle, nicht aktualisiert. Ich kann einfach einen neuen Loader mit einer anderen ID erstellen, der einmal funktioniert. Wenn ich jedoch auf einen anderen Tag klicke, wird die Aktualisierung beendet. Das Problem liegt im Cursor. Wie kann ich einen Cursor von einem Loader aus aktualisieren, damit ich nicht ständig einen neuen Loader erstellen muss? Danke im Voraus!

Erster Aufruf zum Erstellen des Loader in onCreate () in MyMainDisplayActivity Klasse:

makeProviderBundle(new String[] {"_id, event_name, start_date, start_time, end_date, end_time, location"},
            "date(?) >= start_date and date(?) <= end_date", new String[]{getChosenDate(), getChosenDate()}, null);
    getLoaderManager().initLoader(0, myBundle, MainDisplayActivity.this);

    list.setAdapter(agendaAdapter);

Dies sind die überschriebenen Methoden vonLoaderCallbacks<Cursor>

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    Uri baseUri = SmartCalProvider.CONTENT_URI;
    return new CursorLoader(this, baseUri, args.getStringArray("projection"), 
            args.getString("selection"), args.getStringArray("selectionArgs"), args.getBoolean("sortOrder") ? args.getString("sortOrder") : null );
}



@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    agendaAdapter.swapCursor(arg1);
}



@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    //Not really sure how this works. Maybe I need to fix this here?
    agendaAdapter.swapCursor(null);

}

public void makeProviderBundle(String[] projection, String selection, String[] selectionArgs, String sortOrder){
    /*this is a convenience method to pass it arguments 
     * to pass into myBundle which in turn is passed 
     * into the Cursor loader to query the smartcal.db*/
    myBundle = new Bundle();
    myBundle.putStringArray("projection", projection);
    myBundle.putString("selection", selection);
    myBundle.putStringArray("selectionArgs", selectionArgs);
    if(sortOrder != null) myBundle.putString("sortOrder", sortOrder);
}

Für weitere Informationen stehen wir Ihnen gerne zur Verfügung. Nochmals vielen Dank für jede Hilfe!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage