Traiter les résultats de recherche
L'objet
SearchResponse que vous recevez du service de recherche unifiée structure vos résultats de recherche selon la classe
EntityBasedSearchable et les champs de recherche correspondant à vos mots-clés. Pour accéder aux données, vous devez analyser cet objet.
Avant de commencer : assurez-vous que UnifiedSearchServices.search() a renvoyé un objet SearchResponse avec des données. Transmettez SearchResponse à parseResponse().
- Importez les classes et les interfaces requises.
import net.rim.device.api.unifiedsearch.entity.*;
import net.rim.device.api.util.Arrays;
import net.rim.device.api.system.Application;
import java.util.*;
- Créez une variable d'instance pour stocker des entités pouvant faire l'objet d'une recherche à présenter à l'utilisateur de terminal BlackBerry.
MySearchableEntity[] _myEntities;
- implémentez parseResponse. Cette méthode s'exécutant une fois votre thread de recherche terminé, déclarez le paramètre SearchResponse comme final.
private void parseResponse(final SearchResponse searchResult) {
- Configurez cette méthode pour s'exécuter lorsque votre application regagne le contrôle du thread d'événement.
Application.getApplication().invokeLater(new Runnable() {
public void run() {
- À partir des résultats de la recherche, récupérez un objet Hashtable contenant des champs de recherche et des entités de recherche pour votre classe EntityBasedSearchable.
final Hashtable results = searchResult.getSearchResult(_searchable);
- Récupérez un objet Enumeration contenant les valeurs dans l'objet Hashtable et déclarez un tableau pour stocker des valeurs uniques provenant de l'énumération.
Enumeration values = results.elements();
Object[] searchableEntities;
- Initialisez votre tableau d'entités pouvant faire l'objet d'une recherche à afficher.
_myEntities = new MySearchableEntity[0];
- Itérez dans l'énumération values et ajoutez des valeurs uniques à searchableEntities.
while(values.hasMoreElements()) {
searchableEntities = (Object[]) values.nextElement();
for(int i = searchableEntities - 1; i >= 0; --i) {
if(!Arrays.contains(_myEntities, searchableEntities[i]) {
Arrays.add(_myEntities, searchableEntities[i]);
}
}
}
}
});
}
Le tableau
_myEntities contient une série d'objets
MySearchableEntity uniques que vous pouvez utiliser pour afficher les résultats de la recherche à l'utilisateur.
Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.