Guía de desarrollo

Local Navigation

Procesar los resultados de la búsqueda

El objeto SearchResponse que recibe del Servicio de búsqueda unificada estructura sus resultados de búsqueda por EntityBasedSearchable y los campos de búsqueda que coincidieron con sus palabras clave. Para acceder a los datos, debe analizar este objeto.
Antes de comenzar: Asegúrese de que UnifiedSearchServices.search() ha devuelto un objeto SearchResponse con datos. Pase SearchResponse a parseResponse().
  1. Importe las clases y las interfaces necesarias.
    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. Cree una variable de la instancia para almacenar las entidades que se pueden buscar, para mostrárselas al usuario del dispositivo BlackBerry.
    MySearchableEntity[] _myEntities;
  3. Implemente parseResponse. Este método se ejecuta después de la terminación de su subproceso de búsqueda, así que declare el parámetro SearchResponse como final.
    private void parseResponse(final SearchResponse searchResult) {
  4. Configure este método para que se ejecute cuando su aplicación recupere el control sobre el subproceso de eventos.
        Application.getApplication().invokeLater(new Runnable() {
            public void run() {
  5. De los resultados de la búsqueda, recupere un objeto Hashtable que contenga campos de búsqueda y entidades que se pueden buscar para EntityBasedSearchable.
                final Hashtable results = searchResult.getSearchResult(_searchable);
  6. Recupere un objeto Enumeration que contenga los valores en Hashtable y declare una matriz para almacenar los valores únicos desde la enumeración.
                Enumeration values = results.elements();
                Object[] searchableEntities;
  7. Inicialice su matriz de entidades que se pueden buscar y que se mostrarán.
                _myEntities = new MySearchableEntity[0];
  8. Itere a través de la enumeración de values y agregue los valores únicos 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 matriz _myEntities contiene un conjunto de objetos únicos MySearchableEntity que puede utilizar para mostrar los resultados de la búsqueda al usuario.

¿Le ha resultado útil esta información? Envíenos sus comentarios.