LoaderManager mit mehreren Loadern: Wie bekomme ich den richtigen Cursorloader?
Mir ist es nicht klar, wie man den rechten cursor, wenn Sie mehrere Lader. Können sagen, Sie definieren zwei verschiedene Loader:
getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);
dann in onCreateLoader() Sie tun verschiedene Dinge, je nach id:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
if (id==0){
CursorLoader loader = new CursorLoader(getActivity(),
MaterialContentProvider.CONTENT_URI,null,null,null,null);
}else{
CursorLoader loader = new CursorLoader(getActivity(),
CustomerContentProvider.CONTENT_URI,null,null,null,null);
};
return loader;
}
so weit so gut. Aber wie man die rechts-cursor in onLoadFinished ()weil Sie keine id zur Identifizierung der Rechte Cursor zur rechten Cursoradapter.
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
mycursoradapter1.swapCursor(cursor);
if(isResumed()){
setListShown(true);
}else {
setListShownNoAnimation(true);
}
}
//and where to get the cursor for mycursoradapter2
oder bin ich da falsch und das ist der falsche Weg, um die Ergebnisse für zwei verschiedene cursoradapter in einem fragment.
InformationsquelleAutor der Frage Kay Gladen | 2011-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Loader-Klasse hat eine Methode namens getId(). Ich hoffe dies gibt die id an, die Sie verbunden haben mit der loader.
InformationsquelleAutor der Antwort Kurtis Nusbaum
Verwenden Sie die getId() Methode Loader:
InformationsquelleAutor der Antwort Igor Ganapolsky
Wenn Ihr Lader haben nichts gemeinsam, aber die Klasse der Typ des Ergebnisses (hier:
Cursor
), sind Sie besser dran, die Schaffung von zwei separatenLoaderCallbacks
- Instanzen (einfach als zwei innere Klassen in Ihrer Aktivität/Fragment), die jeweils einen für eine loader-Behandlung, anstatt zu versuchen zu mischen äpfel mit Birnen.In Ihrem Fall scheint es, dass sowohl die Datenquelle und das Ergebnis der Behandlung sind unterschiedlich, was erfordert, dass Sie schreiben, die zusätzlichen boilerplate-code zu identifizieren, die das aktuelle Szenario und versenden es an die entsprechende code-block.
InformationsquelleAutor der Antwort BladeCoder