Guida allo sviluppo

Local Navigation

Elaborazione dei risultati della ricerca

L'oggetto SearchResponse ricevuto dall'utente da parte del servizio Unified Search organizza i risultati della ricerca di EntityBasedSearchable e i campi di ricerca che sono risultati corrispondenti alle parole chiave dell'utente. Per accedere ai dati, è necessario analizzare questo oggetto.
Prima di iniziare: Assicurarsi che UnifiedSearchServices.search() abbia restituito un oggetto SearchResponse con dati. Passare SearchResponse a parseResponse().
  1. Importare le classi e le interfacce richieste.
    import net.rim.device.api.unifiedsearch.entity.*;
    import net.rim.device.api.util.Arrays;
    import net.rim.device.api.system.Application;
    import java.util.*;
    
  2. Creare una variabile di istanza per memorizzare le entità ricercabili, visualizzabili dall'utente BlackBerry.
    MySearchableEntity[] _myEntities;
  3. Implementare parseResponse. Questo metodo viene eseguito al termine del thread di ricerca, pertanto dichiarare il parametro SearchResponse come final.
    private void parseResponse(final SearchResponse searchResult) {
  4. Configurare questo metodo per l'esecuzione quando l'applicazione recupera il controllo del thread evento.
        Application.getApplication().invokeLater(new Runnable() {
            public void run() {
  5. Dai risultati della ricerca, recuperare un oggetto Hashtable contenente campi di ricerca ed entità ricercabili per EntityBasedSearchable.
                final Hashtable results = searchResult.getSearchResult(_searchable);
  6. Recuperare un oggetto Enumeration contenente i valori in Hashtable e dichiarare una matrice per memorizzare valori univoci dall'enumerazione.
                Enumeration values = results.elements();
                Object[] searchableEntities;
  7. Inizializzare la matrice delle entità ricercabili da visualizzare.
                _myEntities = new MySearchableEntity[0];
  8. Scorrere l'enumerazione values e aggiungere valori univoci a 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]);
                        }
                    }
                }
            }
        });
    } 
La matrice _myEntities contiene una matrice di oggetti MySearchableEntity univoci che è possibile utilizzare per consentire all'utente di visualizzare i risultati della ricerca.

Le informazioni sono state utili? Inviateci i vostri commenti.