검색 결과 처리
통합 검색 서비스로부터 받는
SearchResponse 객체는
EntityBasedSearchable 그리고 키워드와 일치하는 검색 필드를 기준으로 검색 결과를 정리합니다. 데이터에 액세스하려면 이 객체를 구문 분석해야 합니다.
시작하기 전에: UnifiedSearchServices.search()가 SearchResponse 객체를 데이터와 함께 반환했는지 확인하십시오. SearchResponse 객체를 parseResponse()에 전달하십시오.
- 필요한 클래스와 인터페이스를 가져옵니다.
import net.rim.device.api.unifiedsearch.entity.*;
import net.rim.device.api.util.Arrays;
import net.rim.device.api.system.Application;
import java.util.*;
- BlackBerry 단말기 사용자에게 표시할 검색 가능 객체를 저장하기 위한 인스턴스 변수를 만듭니다.
MySearchableEntity[] _myEntities;
- parseResponse를 구현합니다. 이 메소드는 검색 스레드가 종료된 후에 실행되므로 SearchResponse 매개 변수를 final로 선언합니다.
private void parseResponse(final SearchResponse searchResult) {
- 프로그램이 이벤트 스레드를 다시 제어할 수 있게 될 때 실행되도록 이 메소드를 구성합니다.
Application.getApplication().invokeLater(new Runnable() {
public void run() {
- 검색 결과에서 EntityBasedSearchable에 대한 검색 필드 및 검색 가능 엔터티를 포함하고 있는 Hashtable 객체를 검색합니다.
final Hashtable results = searchResult.getSearchResult(_searchable);
- Hashtable에 값을 포함하고 있는 Enumeration 객체를 검색하고, 열거로부터 고유 값을 저장하기 위한 배열을 선언합니다.
Enumeration values = results.elements();
Object[] searchableEntities;
- 표시할 검색 가능 엔터티의 배열을 초기화합니다.
_myEntities = new MySearchableEntity[0];
- values 열거를 통해 반복하고 고유 값을 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]);
}
}
}
}
});
}
_myEntities 배열에는 사용자에게 검색 결과를 표시하는 데 사용할 수 있는 고유
MySearchableEntity 객체의 집합이 포함되어 있습니다.
이 정보가 도움이 되었습니까? 의견을 보내 주십시오.