Din kode er lidt svær at forstå på grund af dårlig formatering.
Under alle omstændigheder er det leverede svar faktisk ikke en rettelse. Markøren returnerede til onLoadFinished
bør garanteret ikke lukkes, så du indlæser din markør på den forkerte måde. Specifikt når du ringer
adapter.getFilter().filter(s.toString());
Jeg forstår ikke rigtig, hvad der foregår her, men jeg forstår, at du burde gøre noget andet. Gem blot forespørgselsfilteret i et felt i dit Fragment
og kør getLoaderManager().restartLoader(DRINKS_LIST_LOADER, null, this);
. Bemærk, at du kører restartLoader
, og ikke initLoader
, fordi du har forskellige data, som du vil forespørge efter.
I din onCreateLoader
, skal du bruge det filter, du har gemt som en instansvariabel til selection
.
Noget baggrund
initLoader
indlæser de data, der blev indlæst i den sidste kørsel, hvis de havde kørt før. Det er derfor, du kalder ind i initialiseringsmetoden for dit fragment/aktivitet. Dette er praktisk, fordi du ikke behøver at forespørge om retningsændring.
restartLoader
rydder op i tidligere indlæste data, så du får en ny Loader
at arbejde med (sandsynligvis) forskellige data.
Hvis du ikke er rigtig sikker på, hvad du stadig laver, så sørg for at læse denne artikel, som er en meget god introduktionsartikel om Loaders med eksempelkode, der ligner meget det, du vil opnå. Læssere er temmelig gådefulde i starten, men når du først har fået styr på det, sejler det glat.