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

Composants graphiques Android Discussion :

ProgressDialog : comment savoir quand la ListView est chargée ?


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut ProgressDialog : comment savoir quand la ListView est chargée ?
    Bonjour,

    Dans mon appli Android, l'ACTIVITY A appelle l'ACTIVITY B.
    L'ACTIVITY B affiche une ListView, en fonction d'un critère sélectionné dans la l'ACTIVITY A.
    La ListView affiche des données qui proviennent d'une BD Sqlite embarquée.

    Et je souhaiterai donc afficher une progressDialog à l'ouverture de l'ACTIVITY B, le temps du chargement des données qui proviennent de la BD embarquée.

    J'ai trouvé des tutoriaux intéressants qui me mettent sur la voie.
    Mais je n'en ai pas trouvé qui m'indique comment voir où en est le chargement des données qui proviennent de la BD.

    J'ai le code ci dessous sous la main, mais j'imagine qu'il faudrait que je remplace le sleep(5000) par le chargement de mes données .... mais savez vous comment faire ?

    Merci par avance pour ceux qui pourront m'aider.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    private void traitementDesDonneesAvecPourcentage() {
     
    		// On ajoute un message à notre progress dialog
    		progressDialog.setMessage("Chargement en cours");
    		// On donne un titre à notre progress dialog
    		progressDialog.setTitle("Mon chargement");
    		// On spécifie le style 
    		progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    		// On spécifie le maximum
    		progressDialog.setMax(10);
    		// On affiche notre message
    		progressDialog.show();
     
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				// Boucle de 1 a 10
    				for (int i = 0; i < 10; i++) {
    					try {
    						// Attends 500 millisecondes
    						Thread.sleep(500);
    						// On change la valeur de la progression
    						progressDialog.setProgress(i+1);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    				}
     
    				handler.sendEmptyMessage(0);
     
    				// A la fin du traitement, on fait disparaitre notre message
    				progressDialog.dismiss();
    			}
    		}).start();	
    	}
     
    	private void traitementDesDonnees() {
     
    		// On ajoute un message à notre progress dialog
    		progressDialog.setMessage("Chargement en cours");
    		// On affiche notre message
    		progressDialog.show();
     
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				// Boucle de 1 a 10
    				for (int i = 0; i < 10; i++) {
    					try {
    						// Attends 500 millisecondes
    						Thread.sleep(500);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    				}
     
    				handler.sendEmptyMessage(0);
     
    				// A la fin du traitement, on fait disparaitre notre message
    				progressDialog.dismiss();
    			}
    		}).start();
    	}
     
    	private Handler handler = new Handler() {
    		public void handleMessage(android.os.Message msg) {
    			if(msg.what == 0) {
    				monBouton.setText("C'est bon");
    			}
    		};
    	};

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    Peux tu nous montrer le code actuelle qui te permet d'initialiser la connexion avec ta base et comment tu initialises ta liste avec les données ?

    Merci.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Bonjour,

    Ces derniers jours j'ai essayé de chercher par moi même avant de revenir poster sur le forum.... mais le sujet me semble bien compliqué (du moins pour moi qui suis encore débutant sur le sujet).

    Je te donne quand même les infos que tu me demandais .... si tu avais une piste à me proposer ...


    Initialiser la connexion avec la base :

    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
     
    ... 
    import static com.template.fr.persistence.DatabaseFields.*;
     
    public class PoDao extends AbstractDao<Po> {
     
        private DatabaseHelper databaseHelper;
     
        public List<Po> getPoPou(Context ctx, String fctPo) {
            databaseHelper = new DatabaseHelper(ctx, DATABASE_NAME);
            SQLiteDatabase readableDatabase = databaseHelper.getReadableDatabase();
            ArrayList<Po> Pos = new ArrayList<Po>();
            String whereClause = LIB + "=?";
            String[] whereClauseValue = new String[]{fctPo};
            Cursor c = readableDatabase.query(TABLE_PO, null, whereClause,
                    whereClauseValue, PoE, null, PoE);
            if (c.moveToFirst()) {
                do {
     
                    Pos.add(new Po(c.getInt(0), c.getString(1), c.getString(2)));
     
                } while (c.moveToNext());
            }
            c.close();
            readableDatabase.close();
            return Pos;
        }
     
    }
    ...

    Initialiser la liste avec les données :

    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
    public class fctPoActivity extends TemplateMenuActivity {
    	private final PosteDao posteDao = new PosteDao();
    	private ListView lv;
    	private PosteAdapter postesAdapter;
    
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.fctPo);
    		titleText.setText(getResources().getString(R.string.labelPo));
    		TextView titre = (TextView) findViewById(R.id.postesTitle);
    
    		String fctPo = extractMet();
    		titre.setText(new SpannableString(titre.getText() + " " + fctPo));
    		configListView(fctPo);
    	}
    
    	private void configListView(String fctPo) {
    		lv = (ListView) this.findViewById(android.R.id.list);
    		postesAdapter = new PosteAdapter(this, R.layout.row,
    				posteDao.getPoPou(this, fctPo));
    		postesAdapter.notifyDataSetChanged();
    		lv.setAdapter(postesAdapter);
    		lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> list, View v, int pos,
    					long id) {
    				Intent detailIntent;
    				detailIntent = new Intent(fctPoActivity.this,
    						PosteDetailActivity.class);
    				int idPo = ((Po) list.getItemAtPosition(pos)).getId();
    				detailIntent.putExtra("idPo", idPo);
    				startActivity(detailIntent);
    			}
    		});
    	}

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Essaye avec quelque chose comme ça peut être :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class fctPoActivity extends TemplateMenuActivity {
    	private final PosteDao posteDao = new PosteDao();
    	private ListView lv;
    	private PosteAdapter postesAdapter;
    
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.fctPo);
    		titleText.setText(getResources().getString(R.string.labelPo));
    		TextView titre = (TextView) findViewById(R.id.postesTitle);
    
    		String fctPo = extractMet();
    		titre.setText(new SpannableString(titre.getText() + " " + fctPo));
    		configListView(fctPo);
    	}
    
    	private void configListView(String fctPo) {
    		lv = (ListView) this.findViewById(android.R.id.list);
    		
                    traitementDesDonnees(lv);
    
    		lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> list, View v, int pos,
    					long id) {
    				Intent detailIntent;
    				detailIntent = new Intent(fctPoActivity.this,
    						PosteDetailActivity.class);
    				int idPo = ((Po) list.getItemAtPosition(pos)).getId();
    				detailIntent.putExtra("idPo", idPo);
    				startActivity(detailIntent);
    			}
    		});
    	}
    
    private void traitementDesDonnees(final ListView lv) {
     
    		// On ajoute un message à notre progress dialog
    		progressDialog.setMessage("Chargement en cours");
    		// On affiche notre message
    		progressDialog.show();
     
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				
     	                  postesAdapter = new PosteAdapter(fctPoActivity.this, R.layout.row,
    				posteDao.getPoPou(fctPoActivity.this, fctPo));
    		         postesAdapter.notifyDataSetChanged();
              		lv.setAdapter(postesAdapter);
    				handler.sendEmptyMessage(0);
     
    				// A la fin du traitement, on fait disparaitre notre message
    				progressDialog.dismiss();
    			}
    		}).start();
    	}
     
    	private Handler handler = new Handler() {
    		public void handleMessage(android.os.Message msg) {
    			if(msg.what == 0) {
    
    	
    				Log.e("TAG", "c'est bon");
    			}
    		};
    	};

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Merci beaucoup pour le coup de main.
    Je te reviens dès que j'aurais essayé, pour te tenir au courant (d'ici ce soir ou demain matin).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Je viens de tester ta proposition .... mais quand j'appelle l'activity, je tombe sur une erreur que je ne comprends pas :

    Comprenez vous ce message ?

    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-28 20:00:37.685: ERROR/AndroidRuntime(443): FATAL EXCEPTION: main
    12-28 20:00:37.685: ERROR/AndroidRuntime(443): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.template.fra/com.template.fra.activities.RechercheSalResultActivity}: java.lang.NullPointerException
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.os.Handler.dispatchMessage(Handler.java:99)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.os.Looper.loop(Looper.java:123)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread.main(ActivityThread.java:3647)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at java.lang.reflect.Method.invokeNative(Native Method)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at java.lang.reflect.Method.invoke(Method.java:507)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at dalvik.system.NativeStart.main(Native Method)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443): Caused by: java.lang.NullPointerException
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at com.template.fra.activities.RechercheSalResultActivity.traitementDesDonnees(RechercheSalResultActivity.java:110)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at com.template.fra.activities.RechercheSalResultActivity.configListView(RechercheSalResultActivity.java:87)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at com.template.fra.activities.RechercheSalResultActivity.onCreate(RechercheSalResultActivity.java:79)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
    12-28 20:00:37.685: ERROR/AndroidRuntime(443):     ... 11 more


    Je me permets également de vous montrer mon code également .... on ne sait jamais.
    Merci par avance.


    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    package com.template.fra.activities;
     
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.text.SpannableString;
    import android.util.Log;
    import android.view.View;
    import android.webkit.WebView;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.template.fra.R;
    import com.template.fra.adapter.PosteAdapter;
    import com.template.fra.bean.Poste;
    import com.template.fra.persistence.PosteDao;
     
    public class RechercheSalResultActivity extends TemplateMenuActivity {
     
        private final PosteDao posteDao = new PosteDao();
    	private ListView lv;
        private PosteAdapter postesAdapter;
        private String fonctionResult;
        private String secteurResult;
        private String info;
        private String mapage1;
        private String mapage2;
        private String mapage3;
        private String mapage4;
        private String mapage5;
     
        private ProgressDialog progressDialog;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.postesresults);
            titleText.setText(getResources()
                    .getString(R.string.labelPosteRecherche2));
     
     
            final Bundle extras = getIntent().getExtras();
            if (extras != null) {
                fonctionResult = extras.getString("fonction");
                secteurResult = extras.getString("secteur");
            }
     
       		configListView();
    	}
     
     
    	private void configListView() {
    		lv = (ListView) this.findViewById(android.R.id.list);
     
     
    		traitementDesDonnees(lv);
     
     
    		lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> list, View v, int pos,
    					long id) {
    				Intent detailIntent;
    				detailIntent = new Intent(RechercheSalResultActivity.this,
    						PosteDetailActivity.class);
    				int idPoste = ((Poste) list.getItemAtPosition(pos)).getId();
    				detailIntent.putExtra("idPoste", idPoste);
    				startActivity(detailIntent);
     
    			}
    		});
    	}
     
     
     
     
    private void traitementDesDonnees(final ListView lv) {
     
    		// On ajoute un message à notre progress dialog
    		progressDialog.setMessage("Chargement en cours");
    		// On affiche notre message
    		progressDialog.show();
     
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
     
    				postesAdapter = new PosteAdapter(RechercheSalResultActivity.this, R.layout.row,
    						posteDao.getPostesAvecCriteres(getApplicationContext(),
    		                        fonctionResult, secteurResult);
    				postesAdapter.notifyDataSetChanged();
     
    				lv.setAdapter(postesAdapter);
     
    				handler.sendEmptyMessage(0);
     
    				// A la fin du traitement, on fait disparaitre notre message
    				progressDialog.dismiss();
    			}
    		}).start();
    	}
     
    	private Handler handler = new Handler() {
    		public void handleMessage(android.os.Message msg) {
    			if(msg.what == 0) {
    				Log.e("TAG", "c'est bon");
    			}
    		};
    	};
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2012, 12h55
  2. Savoir quand la page est chargée ?
    Par blanchonvincent dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/09/2007, 23h33
  3. [AJAX] Comment savoir quand l'action est terminée
    Par tatayecorp dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2007, 21h28
  4. [javascript]Savoir quand une frame est chargée
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/08/2005, 09h18
  5. Comment savoir quand une JFrame est rafraichie?
    Par mardona dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 19/08/2005, 12h20

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