Guide de développement

Local Navigation

Encapsulation de vos données dans la classe SearchableEntity

Le service de recherche unifiée indexe les métadonnées exposées par un objet SearchableEntity. Le service renvoie également un objet SearchableEntity en tant que contenu d'un résultat de recherche. Vous devez préparer vos données d'application pour le service en les encapsulant dans votre classe SearchableEntity.

  1. Importez les classes et les interfaces requises.
    import net.rim.device.api.unifiedsearch.SearchField;
    import net.rim.device.api.unifiedsearch.SearchFieldCriteria;
    import net.rim.device.api.unifiedsearch.SearchFieldCriteriaList;
    import net.rim.device.api.unifiedsearch.entity.SearchableEntity;
    import net.rim.device.api.unifiedsearch.searchables.Searchable;
    
  2. Récupérez un tableau d'objets SearchField à partir de votre classe EntityBasedSearchable.
    SearchField[] searchfields = mySearchable.defineSupportedSearchFields();
  3. Créez un objet SearchFieldCriteria pour chacune de vos propriétés de recherche. Dans l'échantillon de code suivant, l'objet de données d'application myObject présente une méthode getProperty() renvoyant une chaîne pour un index donné. Par exemple, si myObject décrit un livre, alors il est possible que les index 0, 1 et 2 de getProperty() renvoient le nom, l'éditeur et le nombre de pages du livre.
    int size = searchfields.length
    SearchFieldCriteria[] criteria = new SearchFieldCriteria[size];
    for (int i = size -1; i >= 0; --i) {
        criteria[i] = new SearchFieldCriteria(searchfields[i], new String[]{myObject.getProperty(i)});
    }
  4. Créez et complétez un objet SearchFieldCriteriaList pour englober vos critères de champ recherche.
    SearchFieldCriteriaList _sfcl = new SearchFieldCriteriaList();
    for (int i = size -1; i >= 0; --i) {
        sfcl.addCriteria(criteria[i]);
    }
  5. Implémentez getSearchCriteria() pour renvoyer votre classe SearchFieldCriteriaList.
    pubic SearchFieldCriteriaList getSearchCriteria() {
        return _sfcl;
    }
  6. Dans getData(), renvoyez votre objet de données d'application. Pour continuer avec notre exemple de livre, cette méthode renverrait un objet qui représente le livre.
    public Object getData() {
        return myObject;
    }
  7. Dans getTitle(), donnez un titre à cette entité de recherche. Le texte de titre s'affiche dans les résultats de recherche. Pour continuer avec l'exemple du livre, myObject.getName() pourrait renvoyer le nom d'un livre.
    public String getTitle() {
        return myObject.getName();
    }
  8. Dans getSummary(), fournissez un résumé des données contenues dans cette entité de recherche. Le texte de résumé s'affiche dans les résultats de recherche. Toujours avec l'exemple du livre, myObject.getDescription() pourrait renvoyer la description d'un livre.
    public String getSummary() {
        return myObject.getDescription();
    }
  9. Implémentez getSearchable(). Récupérez la classe EntityBasedSearchable créée par votre application pour gérer cet objet, puis renvoyez.
    public Searchable getSearchable() {
        return myPublisher.getSearchable();
    }
    
  10. Définissez les options devant s'afficher dans le menu contextuel lorsqu'un utilisateur de terminal BlackBerry clique sur votre entité dans une liste de résultats de recherche. Pour plus d'informations, voir « Spécifier ce que les utilisateurs peuvent faire avec vos données dans les résultats de recherche ».
  11. Si vous souhaitez que cet objet SearchableEntity affiche une icône différente de l'icône de votre application, fournissez l'icône dans getIcon(). Pour plus d'informations, voir « Personnaliser l'apparence de vos données dans les résultats de recherche ».

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.