Aller au contenu

Problème avec un handler


Recommended Posts

Posté(e)

Bonjour

J'ai une multiAutocompleteTextView dans laquelle je charge la liste de l'adapter avec un appel serveur. C'est àdire que la personne écrit 3 lettres, je les récupère, fais un appel serveur, et lui propose une liste par rapport à ce qu'elle à mis.

J'aimerai pouvoir temporiser cet appel. C'set à dire que si la personne écrit plus de 3 lettres, ne pas faire d'appels à chaque lettres, mais juste à la dernière taper (en comptant que si il ne se passe rien pendant 500 ms, alors c'est la dernière)

J'ai donc mis un handler en place pour faire ça. Mais cela ne fonctionne pas :/. il ne fait plus l'appel, et quand il le fait, il le fait quand même à chaque lettres tapées

Mon code

Dans le OnCreate :

searchZone.setOnItemClickListener(this);

       // lISTENER key pressed on ZoneOK+multiauocompletetextview
       searchZone.addTextChangedListener(new TextWatcher() {

           @Override
           public void afterTextChanged(Editable s) {
               [...]
           }

           @Override
           public void beforeTextChanged(CharSequence s, int start, int count, int after) {


           }

           @Override
           public void onTextChanged(CharSequence s, int start, int count, int after) {
               try {

                       if (s.length() >= searchZone.getThreshold()) {


                           try{
                               timerHandler.removeCallbacks(callHostToLoadSuggest);
                           }catch(Exception e){
                               timerHandler = new Handler();
                           }


                           // Display Suggestions
                           search_pattern = searchZone.getText().toString();
                           timerHandler.postDelayed(callHostToLoadSuggest, 500);




               } catch (Exception e) {

                   Alerts.showAlert(e.toString(), HeaderMailDisplayActivity.this, true);
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }
       });

Le Runnable :

    final Runnable callHostToLoadSuggest = new Runnable() {
          public void run() {

              displaySuggest(search_pattern);

       }};

Je ne comprend pas trop ce qui ne vas pas, quelqu'un saurai me dire ce qui cloche ?

  • 1 month later...
Posté(e)

Regarde bien que le Handler soit vide de callback avant le postDelayed

Essaye de mettre des breakpoint pour tracer :o

Quand tu dis "il ne fait plus l'appel ou quand il le fait ...", c'est quand tu changes quoi ?

Posté(e)

je ne changes rien. Il ne fait pas l'appel quand je tape les caractères, suffit que je fasse un appuie sur la touche qui efface le dernire caractère pour qu'il se mettent à faire dse appels à chaque lettres

Posté(e)

Il semblerai que certaines fois il ne passe pas dans l'adapter de la liste. Ce qui forcément entraine qu'il ne l'affiche pas. Cependant je n'arrive pas à déterminer pourquoi il n'y passe pas (j'ai vérifié, la liste est bonne, quand je crée l'adapter et il apsse bien sur la ligne "searchZone.setAdapter(adapter);

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...