IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

AutoCompleteTextView & onItemClick


Sujet :

Android

  1. #21
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Ok, j'ai modifié le code avec la nouvelle version, cette fois c'est sûr!
    Et si j'ai tout suivi cette fois ci, l'idée serait d'avoir THRESHOLD_DROPDOWN = THRESHOLD_TASK + 1 pour que la liste soit déjà initialisée.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private final int THRESHOLD_TASK	 = 3;
    private final int THRESHOLD_DROPDOWN = 4;

  2. #22
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    ok, compris le problème: il n'y a pas de mention de mise à jour (Dernière modification par xxxxx ; 11/12/2012 à xxhxx. ) de ce post!
    Ben si... je le vois bien à la fin...

    -> c'est space (à mes yeux) de différencier les 2...
    Pas du tout, si tu regardes les examples d'autocomplete, ils ne marcheraient pas sinon
    (tu passes une array de string completement différentes).

    Et si j'ai tout suivi cette fois ci, l'idée serait d'avoir THRESHOLD_DROPDOWN = THRESHOLD_TASK + 1 pour que la liste soit déjà initialisée.
    Oui, c'est grosso merdo ce que je disais :
    Citation Envoyé par nicroman
    On tape 3 lettres (PER) => bim threshold 1 du thread => async task
    Rien n'est affiché... c'est normal.... on n'a pas encore la réponse... et surtout threshold 2 pas encore atteint.
    On tape 'I' => bim threshold 2 du textview =>

  3. #23
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    http://hpics.li/e4e6ba1

    Je vais tester tout ça et je reviens.

  4. #24
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    me rend compte d'un truc bizarre, me demande si c'est pas le autocomplete lui-même qui déconne....... parce que même avec le décalage des 2 threshold j'ai l'impression que la liste affichée n'est pas la bonne par rapport à la requête...

    Ou alors à force de tester 12M de trucs je n'ai plus les idées claires...... sans parler du fait qu'on m'embrouille aussi ici...

    précision: pour des raisons trop compliquées à expliquer ici, la query DOIT être relancée à chaque caractère >= THRESHOLD_TASK (=3 & DROPDOWN=4)
    (notamment parce qu'on a une fct php dont je dois me servir et qui ne renvoie que les 20 premières villes xxx correspondantes, et qu'il faut donc forcément affiner la rqt à chq caractère saisi)
    -> et j'ai fait la modif de ton code en ce sens

    J'espique ce qui me trouble:

    -> je tape PAR
    -> la requête ramène
    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
    12-14 11:19:33.470: E/*****************(5792): (Park (Brabant Wallon))
    12-14 11:19:33.470: E/*****************(5792): (Paray (Nièvre, Bourgogne))
    12-14 11:19:33.470: E/*****************(5792): (Parcé (Ille-et-Vilaine, Bretagne))
    12-14 11:19:33.470: E/*****************(5792): (Pardè)
    12-14 11:19:33.470: E/*****************(5792): (Parly (Yonne, Bourgogne))
    12-14 11:19:33.470: E/*****************(5792): (Parma (Corse))
    12-14 11:19:33.470: E/*****************(5792): (Paron (Yonne, Bourgogne))
    12-14 11:19:33.470: E/*****************(5792): (Paroy (Doubs, Franche-Comté))
    12-14 11:19:33.470: E/*****************(5792): (Paroy (Seine-et-Marne, Paris-Ile de France))
    12-14 11:19:33.470: E/*****************(5792): (Paroy (Bourgogne))
    12-14 11:19:33.470: E/*****************(5792): (Parux (Meurthe-et-Moselle, Lorraine))
    12-14 11:19:33.470: E/*****************(5792): (Paraeo (Polynésie, DOM-TOM))
    12-14 11:19:33.470: E/*****************(5792): (Paramé (Ille-et-Vilaine, Bretagne))
    12-14 11:19:33.470: E/*****************(5792): (Parari (Polynésie, DOM-TOM))
    12-14 11:19:33.470: E/*****************(5792): (Parata (Haute-Corse, Corse))
    12-14 11:19:33.470: E/*****************(5792): (Parata (Corse))
    12-14 11:19:33.470: E/*****************(5792): (Paraza (Aude, Languedoc-Roussillon))
    12-14 11:19:33.470: E/*****************(5792): (Parcey (Jura, Franche-Comté))
    12-14 11:19:33.470: E/*****************(5792): (Pareds (Pays-de-la-Loire))
    12-14 11:19:33.480: E/*****************(5792): (Pareid (Meuse, Lorraine))
    12-14 11:19:33.480: D/MyActivity - received(5792): Received 20 villes from update task
    -> le dropdown n'affiche rien: c'est normal

    -> je rajoute le 'I'
    -> la requête ramène
    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
    12-14 11:24:38.880: D/MyActivity - filter(5792): Ville Adapter Filter changed:Pari
    12-14 11:24:38.880: D/MyActivity - starting(5792): Starting Update of Villes with Pari
    12-14 11:24:38.890: E/>>>********* ASYNC(5792): run
    12-14 11:24:39.240: E/*****************(5792): (Parijs (Flandre Orientale))
    12-14 11:24:39.240: E/*****************(5792): (Parike (Flandre Orientale))
    12-14 11:24:39.240: E/*****************(5792): (Paribou (Loire-Atlantique, Pays-de-la-Loire))
    12-14 11:24:39.250: E/*****************(5792): (Parigny (Loire, Rhône-Alpes))
    12-14 11:24:39.250: E/*****************(5792): (Parigny (Manche, Basse-Normandie))
    12-14 11:24:39.250: E/*****************(5792): (Parigny (Vienne, Poitou-Charentes))
    12-14 11:24:39.250: E/*****************(5792): (Parigny (Bourgogne))
    12-14 11:24:39.250: E/*****************(5792): (Parigné (Ille-et-Vilaine, Bretagne))
    12-14 11:24:39.260: E/*****************(5792): (Parisot (Dordogne, Aquitaine))
    12-14 11:24:39.260: E/*****************(5792): (Parisot (Lot-et-Garonne, Aquitaine))
    12-14 11:24:39.260: E/*****************(5792): (Parisot (Tarn, Midi-Pyrénées))
    12-14 11:24:39.260: E/*****************(5792): (Parisot (Tarn-et-Garonne, Midi-Pyrénées))
    12-14 11:24:39.260: E/*****************(5792): (Parignac (Pays-de-la-Loire))
    12-14 11:24:39.260: E/*****************(5792): (Paris 1er (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 2ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 3ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 4ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 5ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 6ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: E/*****************(5792): (Paris 7ème (Paris, Paris-Ile de France))
    12-14 11:24:39.260: D/MyActivity - received(5792): Received 20 villes from update task
    -> le dropdown affiche uniquement: Paroy (Seine-et-Marne, Paris-Ile de France) de la 1ère requête

    -> alors que finalement, avec le décalage, il devrait afficher TOUTE la liste des villes de la 1ère requête! de Park à Pareid

    -> or il ne le fait pas!

    Donc AutoCompleteTextView n'affiche pas tout le tableau des Ville []

    J'étais trop focalisé sur la 1ère problématique avant, je n'avais pas fait gaffe à ça!
    -> que la liste s'affiche en décalé pour qry-1, ok, pkoi pas
    -> mais qu'elle n'affiche pas toutes les data?

    EDIT: une piste?
    -> en fait le clear() ne vide pas l'array des Villes
    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
     public synchronized void onVilleAdapterUpdateResult(ClassVilleAC[] data)
        {
    
    int i=0;
    for (Ville v : data)	{ Log.w("onVilleAdapterUpdateResult-----------> " + i,v.toString()); i++;}
    
        	this.villeAdapterUpdateTask = null;
            if (data != null) 
            {
                Log.d("MyActivity - received","Received "+data.length+" villes from update task");
                this.villeAdapter.clear();
    for (i=0; i< villeAdapter.getCount(); i++)	{ Log.w("onVilleAdapterUpdateResult 2-----------> " + i,villeAdapter.getItem(i).toString());}
                this.villeAdapter.addAll(data);
                this.villeAdapter.notifyDataSetChanged(); // mise à jour du drop down...
           }
    
        }

    logcat:
    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
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 0(4473): Parijs (Flandre Orientale)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 1(4473): Parike (Flandre Orientale)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 2(4473): Paribou (Loire-Atlantique, Pays-de-la-Loire)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 3(4473): Parigny (Loire, Rhône-Alpes)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 4(4473): Parigny (Manche, Basse-Normandie)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 5(4473): Parigny (Vienne, Poitou-Charentes)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 6(4473): Parigny (Bourgogne)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 7(4473): Parigné (Ille-et-Vilaine, Bretagne)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 8(4473): Parisot (Dordogne, Aquitaine)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 9(4473): Parisot (Lot-et-Garonne, Aquitaine)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 10(4473): Parisot (Tarn, Midi-Pyrénées)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 11(4473): Parisot (Tarn-et-Garonne, Midi-Pyrénées)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 12(4473): Parignac (Pays-de-la-Loire)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 13(4473): Paris 1er (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 14(4473): Paris 2ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 15(4473): Paris 3ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 16(4473): Paris 4ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 17(4473): Paris 5ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 18(4473): Paris 6ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: W/onVilleAdapterUpdateResult-----------> 19(4473): Paris 7ème (Paris, Paris-Ile de France)
    12-14 16:01:20.970: D/MyActivity - received(4473): Received 20 villes from update task
    12-14 16:01:20.980: W/onVilleAdapterUpdateResult 2-----------> 0(4473): Paroy (Seine-et-Marne, Paris-Ile de France)
    et c'est cette même ligne "non clearée" qui se retrouve en affichage au caractère + 1

  5. #25
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Il doit y avoir un filtre automatique fait par l'objet AutoCompleteTextView lui-même
    .
    Reste à pouvoir le désactiver.

  6. #26
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Ha non mais c'est sur et certain !
    C'est la base de AutoCompleteTextView (et je pensais honnêtement que tu le savais au tout début ! )

    http://developer.android.com/guide/t...l#AutoComplete

    Et je ne vois pas l’intérêt de le désactiver !

  7. #27
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Ha non mais c'est sur et certain !
    C'est la base de AutoCompleteTextView (et je pensais honnêtement que tu le savais au tout début ! )
    ben non...
    je comprends donc aussi mieux pourquoi on avait du mal à se comprendre.


    Et je ne vois pas l’intérêt de le désactiver !
    oui, ça j'ai bien compris, et je ne sais plus comment t'expliquer l'intérêt pour nous, en dehors du fait que je n'ai pas le choix (ce que boss veut...........).

    cela dit, le pourquoi n'a pas trop d'importance finalement, la question est surtout "est-ce-que tu pourrais STP adapter ton code en implémentant un filtre qui affiche TOUT"?
    -> non pas par facilité, loin de là
    -> mais parce que je comprends mieux avec un exemple concret

    j'ai trouvé des pistes sur un autre forum anglophone bien connu, mais je n'arrive pas à adapter les exemples donnés à "notre" cas de Ville[]

    bonne soirée.

  8. #28
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Rien n'empêche de mettre les thresholds à la même valeur....
    et de faire la requête tout le temps (enfin... juste quand le filtre a changé hein !)

    Mais sans parler d'implémentation, il y aura toujours deux/trois problèmes:
    1. Le dropdown ne s'affichera pas tout de suite (il sera vide au départ, et il faudra attendre la fin de la requête pour qu'il se remplisse)
    2. Quand on rajoute un caractère, le feedback sera immédiat, mais il faudra attendre pour avoir une "nouvelle liste" (donc risque de cliquer sur une mauvaise ville du coup)
    3. Quand on supprime un caractère, la liste ne changera pas... tant que la requête ne sera pas revenue.

    Et quel que soit le sens dans lequel on tourne le problème, ce sera toujours le cas si on fait la requête à chaque caractère.
    Faire la requête une et une seule fois solutionne #2 et #3... #1 est minimisé par les thresholds différents.

    On peut supprimer #2 et #3 en "vidant" l'adapter complètement à chaque caractère (mais du coup on a #1 en boucle, et c'est carrément moche).
    Il est possible de supprimer #3 en conservant un "cache" de(s) la requète précédente(s) (au prix donc d'une grande quantité de mémoire).

    Enfin bref... après... tout est question de choix...

  9. #29
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Enfin bref... après... tout est question de choix...
    choix que je n'ai pas....... j'ai eu beau expliquer tout ce que tu me dis...... mais "on" veut que ça marche comme ça..... toujours la même réponse "mais non y a forcément un moyen, faut chercher!"...

    une idée des modifs du code donc, pour désactiver le filtre, ou filtrer avec un " * " finalement?

  10. #30
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Non mais y a pas moyen....
    Même en partant sur des latences de 20/30ms (ce qui est déjà très très bon).... la latence sera quasi-visible, et à moins de vraiment faire la requête à chaque caractère tapé directement, sans passer par un thread, ce ne sera jamais synchronisé... une expérience utilisateur déplorable, un programme qui risque de "crasher" à tout moment (une perte temporaire de réseau ?), etc...

    une idée des modifs du code donc, pour désactiver le filtre, ou filtrer avec un " * " finalement?
    Ca il faudrait regarder dans le code deAutoCompleteTextView (j'avoue avoir la flemme un peu).

  11. #31
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Bon je mets ça en pause pour le moment, en espérant que j'arriverai à enfin lui expliquer que ce qu'il veut est impossible...

    Faut que j'avance encore sur d'autres points!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo