9

Così, dopo ho impostato il filtro sul mio ListView:Android - conteggio filtro ListView

//Log adapter count before filter 
listView.getFilter().filter(searchStr) 
//Log adapter count after filter 

Quello che sto cercando di realizzare è quello di ottenere il conteggio del risultato di tale filtraggio. Come se prima ci fossero 10 elementi, poi applico il filtro, quindi appariranno solo 5 elementi, voglio ottenere quel conteggio "5". Ho provato a controllare il numero di schede prima e dopo il filtro senza fortuna. Stanno visualizzando lo stesso conteggio (sto usando un BaseExpandableListAdapter) se applico il filtro, e se applico nuovamente il filtro il numero cambia da prima (ma il prima e il dopo del filtro sono sempre gli stessi).

Qui di seguito è il risultato di esempio di quello che sto dando sui tronchi:

Before filter the count is 10. After filter the count is 10. 
Before filter the count is 8. After filter the count is 8. 

Ho pensato che forse il mio adattatore non ottiene il conteggio riflessa subito, ma sul secondo filtro, cambia il valore di , quindi ho pensato notifyDataSetChanged dopo che il filtro avrebbe fatto la differenza, ma non è così. Qualsiasi aiuto sarebbe apprezzato.

Grazie.

risposta

19

Questo è come sono riuscito a farlo:

myAdapter.getFilter().filter(searchText, new Filter.FilterListener() { 
    public void onFilterComplete(int count) { 
     Log.d("log", "result count:" + count); 
    } 
}); 
+0

questo in realtà mi ha risolto il problema originale, più un altro: la mia lista appariva con tutti gli elementi per una frazione di secondo, poiché il filtro veniva eseguito in Asynctask in modo trasparente e setAdapter veniva chiamato prima della pubblicazioneRisultati effettivamente accaduti – leRobot

+1

Mancanti) ; \t nel tuo codice ,,, il suo filtro vicino aperto (ma nessuna parentesi chiusa.so aggiungi); alla fine – sasikumar

-1

Provare a chiamare listview.getCount() dopo aver applicato il filtro.

+0

sto usando ExpandableListView. E usando quello restituisce il conteggio di gruppo non il conteggio di figlio su ogni gruppo. – lorraine