Processar resultados de pesquisa

O objeto SearchResponse que você recebe do serviço de pesquisa unificada estrutura seus resultados de pesquisa pelo EntityBasedSearchable e campos de pesquisa que correspondem às palavras-chave. Para acessar os dados, você deve analisar este objeto.
Antes de começar: Verifique se UnifiedSearchServices.search() retornou um objeto SearchResponse com os dados. Passe o SearchResponse para parseResponse().
  1. Importe as classes e interfaces necessárias.
    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. Crie uma variável de instância para armazenar entidades pesquisáveis a serem exibidas ao usuário do aparelho BlackBerry.
    MySearchableEntity[] _myEntities;
  3. Implemente parseResponse. Este método é executado depois que o thread de pesquisa termina, então declare o parâmetro SearchResponse como final.
    private void parseResponse(final SearchResponse searchResult) {
  4. Configure este método para ser executado quando seu aplicativo recupera o controle do thread de evento.
        Application.getApplication().invokeLater(new Runnable() {
            public void run() {
  5. A partir dos resultados da pesquisa, recupere um objeto Hashtable que contenha campos de pesquisa e entidades pesquisáveis para seu EntityBasedSearchable.
                final Hashtable results = searchResult.getSearchResult(_searchable);
  6. Recupere um objeto Enumeration que contenha os valores no Hashtable e declare uma matriz para armazenar valores exclusivos da enumeração.
                Enumeration values = results.elements();
                Object[] searchableEntities;
  7. Inicialize sua matriz de entidades pesquisáveis a serem exibidas.
                _myEntities = new MySearchableEntity[0];
  8. Faça a iteração pela enumeração values e adicione valores exclusivos 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]);
                        }
                    }
                }
            }
        });
    } 
A matriz _myEntities contém um conjunto de objetos exclusivos MySearchableEntity que você pode usar para exibir os resultados de pesquisa para o usuário.

Estas informações foram úteis? Gostaríamos de receber seus comentários.