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().
- 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.*;
- Cree una variable de la instancia para almacenar las entidades que se pueden buscar, para mostrárselas al usuario del dispositivo BlackBerry.
MySearchableEntity[] _myEntities;
- 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) {
- 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() {
- 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);
- 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;
- Inicialice su matriz de entidades que se pueden buscar y que se mostrarán.
_myEntities = new MySearchableEntity[0];
- 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.