Aller au contenu

Problème avec un handler


Recommended Posts

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 ?

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

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);

Lien vers le commentaire
Partager sur d’autres sites

Archivé

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

×
×
  • Créer...