2010-06-07 10 views
0

J'ai implémenté une classe dont la classe étend ArrayAdapter et implémente Filterable. La partie de filtrage (dans la méthode performFiltering()) semble aller bien, elle remplit l'objet FilterResults comme prévu. Mais je pense que je ne le fais pas juste sur la façon de publier les résultats, je atm:custom Filtre Android ne me montrera pas les résultats

protected void publishResults(CharSequence prefix, FilterResults results) 
    { 
    // NOTE: this function is *always* called from the UI thread. 
    subItems = (Vector)results.values; 
    notifyDataSetChanged(); 

    } 

Mais ce ne sera pas tout simplement « remplir » ma liste avec les données reçues. Maintenant, ma question est comment puis-je remplir ma liste avec les résultats reçus? Dois-je faire cela par programme?

Répondre

1

En fait, je l'ai eu de travail avec la pièce suivante de code:

subItems = (Vector<serverContentElement>)results.values; 

notifyDataSetChanged(); 
clear(); 
for(int i = 0; i < subItems.size(); i++) 
    add(subItems.get(i)); 

pour moi, cela a été la seule façon de le faire fonctionner ... dommage il n'y a pas des exemples très concis sur le filet ...

1

J'avais eu le même problème. Essayez d'être plus aggressifs:

protected void publishResults(CharSequence prefix, FilterResults results) 
    { 
    // NOTE: this function is *always* called from the UI thread. 
    subItems.clear(); 
    subItems.addAll((Vector<T>)results.values); 
    notifyDataSetChanged(); 

    } 

Évidemment, je suppose que votre objet « résultats » contient les bonnes données

Cette approche a résolu mon problème

+0

une question de plus: il remplace simplement les éléments List existants avec les éléments de résultats? Donc je n'ai pas besoin de refaire tous les trucs de la méthode getView(), n'est-ce pas? Parce que je n'utilise pas d'éléments standards simples pour ma liste! – TiGer

Questions connexes