Bonjour,

Dans mon appli, j'ai une activité qui représente un glossaire. Elle apparait donc comme une liste avec un EditText pour rechercher rapidement les info. Son code est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
editText.addTextChangedListener(new TextWatcher() {
 
	    @Override
	    public void afterTextChanged(Editable s) {
	    }
 
	    @Override
	    public void beforeTextChanged(CharSequence s, int start, int count,
		    int after) {
	    }
 
	    /*
	     * cette méthode compare le texte récupéré de l'EditText avec les
	     * éléments de la Listview puis remplit une mini-liste avec
	     * seulement les éléments correspondants avant de l'afficher
	     */
	    @Override
	    public void onTextChanged(CharSequence s, int start, int before,
		    int count) {
		String searchString = editText.getText().toString();
		int textLength = searchString.length();
 
		// L'Arraylist des résultats est nettoyer avant une nouvelle
		// recherche
		searchResults.clear();
 
		for (int i = 0; i < listItem.size(); i++) {
		    String wordAbb = listItem.get(i).get(ABB);
		    if (textLength <= wordAbb.length()) {
			if (searchString.equalsIgnoreCase(wordAbb.substring(0,
				textLength))) {
			    searchResults.add(listItem.get(i));
			}
		    }
		}
		// Affichage via l'adapteur personnalisé de la mini-liste de
		// rechercheif (CompatibilityUtil.isTablet(getBaseContext())) {
		if (CompatibilityUtil.isTablet(getBaseContext())) {
		    gridview.setAdapter(new GlossaryAdapter(
			    GlossaryActivity.this, searchResults));
		} else {
		    listview.setAdapter(new GlossaryAdapter(
			    GlossaryActivity.this, searchResults));
 
		}
 
	    }
	});
Pour accéder au contenu du glossaire depuis toute l'appli, j'ai ajouté une actionbar avec un Search Widget. J'aimerais que la recherche soit exactement comme pour l'EditText. Mais voila, je cale. J'ai suivi les tutos officiels et autres, mais ca n'aboutit pas à ce que je souhaite. A rien même pour être précis.

J'ai bien créé le fichier searchable.xml, déclarer GlossaryActivity comme searchable activity dans le manifest, et ajouter ceci dans GlossaryActivity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
	// Get the intent, verify the action and get the query
	Intent intent = getIntent();
	if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
	    String query = intent.getStringExtra(SearchManager.QUERY);
	    doSearch(query);
	}
 
    }
 
    public void doSearch(String s) {
 
	int textLength = s.length();
 
	searchResults.clear();
 
	for (int i = 0; i < listItem.size(); i++) {
	    String wordAbb = listItem.get(i).get(ABB);
	    if (textLength <= wordAbb.length()) {
		if (s.equalsIgnoreCase(wordAbb.substring(0, textLength))) {
		    searchResults.add(listItem.get(i));
		}
	    }
	}
	listview.setAdapter(new GlossaryAdapter(GlossaryActivity.this,
		searchResults));
    }
Qu'est ce qui ne va pas ?
En plus, je veux juste afficher le résultat sous le Search Widget, et pour ca, j'ai cru comprendre qu'il faille que j'utilise un custom provider.

Merci de votre aide.