Il tuo codice è un po' difficile da capire a causa della scarsa formattazione.
Ad ogni modo, la risposta fornita in realtà non è una soluzione. Il cursore è tornato su onLoadFinished
dovrebbe essere garantito che non venga chiuso, quindi stai caricando il cursore nel modo sbagliato. In particolare, quando chiami
adapter.getFilter().filter(s.toString());
Non capisco davvero cosa succede qui, ma capisco che dovresti fare qualcos'altro. Basta memorizzare il filtro della query in un campo all'interno del tuo Fragment
ed esegui getLoaderManager().restartLoader(DRINKS_LIST_LOADER, null, this);
. Nota che esegui restartLoader
e non initLoader
, perché disponi di dati diversi per i quali desideri eseguire una query.
Nel tuo onCreateLoader
, dovresti usare il filtro che hai memorizzato come variabile di istanza per la selection
.
Un po' di background
initLoader
carica i dati che sono stati caricati nell'ultima esecuzione, se erano stati eseguiti in precedenza. Questo è il motivo per cui richiami il metodo di inizializzazione del tuo frammento/attività. Questo è utile perché non dovrai richiedere il cambio di orientamento.
restartLoader
pulisce i dati caricati in precedenza in modo da ottenere un nuovo Loader
per lavorare con (probabilmente) dati diversi.
Se non sei ancora sicuro di quello che stai facendo, assicurati di leggere questo articolo, che è un ottimo articolo introduttivo sui caricatori con codice di esempio che assomiglia molto a quello che vuoi ottenere. All'inizio i caricatori sono piuttosto enigmatici, ma una volta presa la mano, la navigazione è tranquilla.