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 :

Traitement des ProgressDialog


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut Traitement des ProgressDialog
    Bonjour à tous,

    je suis actuellement en train de gérer les progressDialog sur mon application (eh oui j'arrive bientôt à la première version que je vais pouvoir mettre sur googlePlay).

    Pour gérer les progressDialog j'ai cette fonction:

    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
     
    private void traitementDesDonnees(final int taille) {
     
    		progressDialog.setMessage("Chargement en cours");
     
    		progressDialog.show();
     
    		new Thread(new Runnable() {
     
    			public void run() {
     
    				for (int i = 0; i < taille; i++) {
     
    					try {
     
    						Thread.sleep(500);
     
    					} catch (InterruptedException e) {
     
    						e.printStackTrace();
     
    					}
     
    				}
     
    			progressDialog.dismiss();
     
    			}
     
    		}).start();
     
    	}
    Je passe en paramètre de la fonction un int ou viendra se loger la taille de mon jArray et en fonction de ça le chargement en dépendra. Cependant j'ai mis en dure le temps d'attente entre chaque tour de boucle (ici 500), mais il ne sera pas le même en fonction des utilisations de l'utilisateur. En effet, si il est en EDGE ou en WIFI le temps de chargement ne sera pas le même. Mon problème ici c'est par exemple que je suis en wifi, ça me marque toujours temps de chargement en cours mais je vois derrière les données qui ont déjà fini de chargé. Je ne sais pas trop comment gérer ça de manière plus optimisé, c'est à dire que si il est sur une grosse connection et que les données s'affiche presque immédiatement on voit peu le cercle de chargement et que si il est en EDGE et que c'est long que l'on voiut le cercle de chargement jusqu'à la fin du chargement des données.

    Je vous remercie

    Italia57

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Oula, oula

    Ne fais pas de démon (boucle "infinie") pour surveiller la progression. Pour faire une barre de progression, il faut que tu aies quelque chose de mesurable.

    Ici, c'est la taille du jArray que tu surveilles. Donc, lorsque celle-ci change, tu dois prévenir la dialog de se mettre à jour avec les nouvelles données. Bien sûr, faire attention à ne pas changer le thread graphique autre part que dans lui-même
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    ben comment je peux faire du coup pour que cela fonctionne le temps que ma listView se remplisse avec les données qui viennent de la BDD MySQL ?

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Comme je l'ai dit : tu cherches quelque chose de mesurable pour faire une progression. Si tu n'as rien qui correspond à ce critère, tu fais juste un chargement "indéfini". Une fois que tu auras identifié ça, tu pourras mettre ensuite identifier l'endroit où cette quantité change, et faire en sorte d'update la barre de progression.

    Je ne sais pas ce que tu fais, je ne sais pas comment tu le fais, je vois juste une boucle qui prend 500 ms par item.
    Je ne peux donc pas du tout donner plus d'info.

    Ps : intéresse-toi peut-être aux AsyncTask, ça devrait te faciliter un peu du travail.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    qu'es qui pourrait être mesurable ? c'est ça que je ne comprend pas.

  6. #6
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pour qu'une progress soit "définie" il faut:
    - Une taille "totale" (par exemple 218 rows)
    - L'avancement courant dans cette taille "totale" (par exemple row #16 / 218)

    L'utilisation des AsyncTask est tout indiquée puisque la classe propose de base la gestion des progress...


    Sinon, une solution est de passer de indéfini à défini......
    Exemple typique:
    Une requete à un webservice pour avoir une "liste de rows" de manière paginée..

    1. On ouvre la progress en mode "indéfini"
    2. On fait la première requete HTTP (en demandant la première page de 50 rows).
    3. On lit les résultats: Le total de rows est < 50 rows ? On passe directement au point #6
    4. On passe la progress en mode "défini" avec en progression: (page*50) / TOTAL
    5. On demande la page suivante (++page), on va en #3
    6. On dismiss la progress bar.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] Traitement des résultats d'une requète
    Par Catalan dans le forum ASP.NET
    Réponses: 23
    Dernier message: 05/10/2005, 17h29
  2. Traitement des dates différent suivant le serveur
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/09/2005, 11h14
  3. Réponses: 1
    Dernier message: 24/07/2005, 22h25
  4. Traitement des champs memo par DBGrid
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/04/2005, 09h24
  5. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 16h57

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