Pour moi, il n'est pas clair comment obtenir le curseur droit si vous avez plusieurs chargeurs. Disons que vous définissez deux chargeurs différents avec:
getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);
puis dans onCreateLoader () vous faites différentes choses selon l'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;
}
jusqu'ici tout va bien. Mais comment obtenir le curseur droit dans onLoadFinished () parce que vous n'obtenez aucun identifiant pour identifier le bon curseur pour le bon adaptateur de curseur.
@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
ou ai-je tort et c'est la mauvaise façon d'obtenir des résultats pour deux adaptateurs de curseur différents dans un fragment.
La classe Loader a une méthode appelée getId () . J'espère que cela renvoie l'identifiant que vous avez associé au chargeur.
Utilisez la méthode getId () de Loader:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
switch (loader.getId()) {
case 0:
// do some stuff here
break;
case 1:
// do some other stuff here
break;
case 2:
// do some more stuff here
break;
default:
break;
}
}
Si vos chargeurs n'ont rien en commun sauf le type de classe du résultat (ici: Cursor
), il vaut mieux créer deux instances LoaderCallbacks
distinctes (simplement comme deux classes internes dans votre Activity/Fragment), chacun dédié à un traitement de chargeur, plutôt que d'essayer de mélanger des pommes avec des oranges.
Dans votre cas, il semble que la source de données et le traitement des résultats soient différents, ce qui vous oblige à écrire le code passe-partout supplémentaire pour identifier le scénario actuel et à le répartir dans le bloc de code approprié.