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().
- 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.*;
- Crie uma variável de instância para armazenar entidades pesquisáveis a serem exibidas ao usuário do aparelho BlackBerry.
MySearchableEntity[] _myEntities;
- 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) {
- 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() {
- 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);
- 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;
- Inicialize sua matriz de entidades pesquisáveis a serem exibidas.
_myEntities = new MySearchableEntity[0];
- 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.