116 votes

LoaderManager avec plusieurs chargeurs : Comment obtenir le bon cursorloader

Pour moi, il n'est pas clair comment obtenir le curseur de droite si vous disposez de plusieurs Chargeurs. Disons que vous définissez deux différents Chargeur avec:

getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);

puis dans onCreateLoader() vous faire des choses différentes en fonction de 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;
} 

so far so good. Mais comment obtenir le curseur droit dans onLoadFinished() parce que vous n'obtenez pas de id pour identifier le Curseur de droite pour le droit 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

ou je me trompe et c'est un mauvais moyen pour obtenir des résultats pour les deux différentes cursoradapter dans un fragment.

119voto

Kurtis Nusbaum Points 16073

La classe Loader possède une méthode appelée getId(). J’espère que cela retourne l’id que vous avez associé avec le chargeur.

32voto

Igor Ganapolsky Points 2851

Utilisez la méthode getId() de chargeur :

8voto

BladeCoder Points 679

Si votre chargeurs n'ont rien en commun, mais le type de classe, le résultat (ici: Cursor), vous êtes mieux de la création de deux LoaderCallbacks de cas (deux classes internes dans votre Activité/Fragment), chacun dédié à un opérateur de traitement, plutôt que d'essayer de mélanger les pommes avec des oranges.

Dans votre cas, il semble que la source de données et le résultat de traitement sont différents, ce qui vous oblige à écrire le supplément de code réutilisable pour identifier le scénario actuel et d'expédition pour le bloc de code approprié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X