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 :

Question de syntaxe AsyncTask


Sujet :

Android

  1. #21
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Pour ton info, hier, j'ai programmé un asyncTask (père) qui appelle d'autres asyncTask (fils).

    Et ça marche nickel

    Au lieu d'utiliser notifyDataSetChanged, tu pourrais employer asyncTask.getStatus().

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    LoadMusicInBackground lmib = new LoadMusicInBackground();
     
    if(lmib.getStatus() == AsyncTask.Status.PENDING){
        // My AsyncTask has not started yet
    }
     
    if(lmib.getStatus() == AsyncTask.Status.RUNNING){
        // My AsyncTask is currently doing work in doInBackground()
    }
     
    if(lmib.getStatus() == AsyncTask.Status.FINISHED){
        // My AsyncTask is done and onPostExecute was called
    }
    Un conseil: recommence tout, une liste à la fois et rajoute des try/catch. Ensuite tu essayeras de le complèter.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  2. #22
    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
    Citation Envoyé par hotcryx Voir le message
    Pour ton info, hier, j'ai programmé un asyncTask (père) qui appelle d'autres asyncTask (fils).
    L'AsyncTask n'est pas un thread....
    L'AsyncTask.execute "empile" la tâche dans une liste de truc à effectuer en background, et exécutés par des "worker-thread". Le nombre de ces threads est caché... et si ce nombre est "1"...

    Donc avoir un AsyncTask père qui produit des AsyncTask fils n'amène rien (à moins que la production des fils soit très lente), le père finissant quasi systématiquement avant les fils...

    En plus la production d'AsyncTask doit se faire dans un thread spécial préparé pour gérer les handles, ce qui n'est pas le cas des worker-threads (mais c'est le cas du thread UI): le onPostExecute() étant appelé dans le thread qui a appelé le "execute()"


    Au lieu d'utiliser notifyDataSetChanged, tu pourrais employer asyncTask.getStatus().
    Heu... là je ne vois pas ce que cela apporte.... il faudrait avoir une boucle qui attende un état ? C'est complètement inutile surtout avec des AsyncTask.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #23
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    mais les worker thread sont des threads

    Quand on fait un gros boulot dans la db, les asyncTask sont bien utiles pour l'UI.

    Le getstatus permet de vérifier le status actuel de la tâche asynchrone.
    Effectivement il faut une boucle ou un truc du style.
    Et si c'est là, ça a forcement son utilité.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  4. #24
    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
    Oui l'utilité de ces fonctions est de savoir, par exemple, si on doit "canceller" une tâche ou juste la laisser tomber (dans un onDestroy par exemple), ou même de savoir si elle a commencé à s'executer (on démarre une nouvelle tâche) ou pas encore (on lui rajoute du taf / on la modifie)...

    Le principe de la programmation MT est que l'on ne doit à aucun moment "attendre" une tâche... "Attendre une tâche" implique une synchronisation, et donc supprime tout aspect "asynchrone"...

    Si un thread T1, lance un thread T2 (qui fait une action B), effectue une action A, et attend T2... c'est absolument identique à: T1 effectue les actions A & B sans lancer T2.

    Quand à la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (!thread.isEnded()) { sleep(x); } // <= ou autre chose
    c'est le pire code qui soit en informatique....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #25
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    A la base mon code était adapté à l'utilisation de plusieurs asyncTask mais le problème c'est que là vu que je fais toutes mes déclarations sous forme de tableaux et boucles, je ne peux plus faire comme cela :s
    Je dois utiliser des tableaux également dans mon asyncTask :s

  6. #26
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Oui l'utilité de ces fonctions est de savoir, par exemple, si on doit "canceller" une tâche ou juste la laisser tomber (dans un onDestroy par exemple), ou même de savoir si elle a commencé à s'executer (on démarre une nouvelle tâche) ou pas encore (on lui rajoute du taf / on la modifie)...

    Le principe de la programmation MT est que l'on ne doit à aucun moment "attendre" une tâche... "Attendre une tâche" implique une synchronisation, et donc supprime tout aspect "asynchrone"...

    Si un thread T1, lance un thread T2 (qui fait une action B), effectue une action A, et attend T2... c'est absolument identique à: T1 effectue les actions A & B sans lancer T2.

    Quand à la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (!thread.isEnded()) { sleep(x); } // <= ou autre chose
    c'est le pire code qui soit en informatique....
    Oui les sleep = HELL!

    mais parfois ce n'est pas si simple:

    ton TPère doit attendre Tfils1, Tfils2... tfilsN.
    Ce sera impossible que Tfils1 inclue le boulot du T2, T3...
    et dans ce cas on se concentre sur le père et c'est tout
    Si la réponse vous a aidé, pensez à cliquer sur +1

  7. #27
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Citation Envoyé par vangoeth Voir le message
    A la base mon code était adapté à l'utilisation de plusieurs asyncTask mais le problème c'est que là vu que je fais toutes mes déclarations sous forme de tableaux et boucles, je ne peux plus faire comme cela :s
    Je dois utiliser des tableaux également dans mon asyncTask :s
    tu devrais faire qqch comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ArrayList<BO> listBO = getListBO(...); //Liste de tâches (objet fils)
     
    if (listBO != null)
    {
       MyAsyncTask myAsyncTask = null;
     
       foreach(BO bo : listBO)
       { 
           myAsyncTask = new MyAsyncTask(... <params>);
           myAsyncTask.execute();
       }
    }
    Si la réponse vous a aidé, pensez à cliquer sur +1

  8. #28
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Lol mon sujet à lancé un débat xD

    Je passe juste voir pour une question :p
    En fait j'ai réglé la plupart des mes problèmes mais là j'ai juste un doute pour transformer cette déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public List<String> mDataAll = new ArrayList<String>();
    	public List<String> mDataQuot = new ArrayList<String>();
    	public List<String> mDataHebd = new ArrayList<String>();
    	public List<String> mDataMens = new ArrayList<String>();
    	public List<String> mDataTrim = new ArrayList<String>();
    	public List<String> mDataAnn = new ArrayList<String>();
    En une déclaration sous forme de boucle avec genre mData[i]

  9. #29
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<String> arrList = new ArrayList<String>();
    Un arrayList est déjà un tableau (array), en cas de doute lol.
    A moins que tu veuilles créer un tableau de tableau.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  10. #30
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais ça je m'en doute (rien qu'avec le nom ^^).
    Mais en fait c'est pour savoir si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<String> mData = new ArrayList<String>();
    Je peux ensuite faire dans une boucle Il me semble que ça n'est pas équivalent vu comme la déclaration est faite.
    C'est pas comme si on avait fait

  11. #31
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Tu peux y accéder de différentes manières.

    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
    ArrayList<String> a = new ArrayList<String>();
    . . .
    for (String s : a) {
        System.out.println(s);
    }
     
    ===
     
    for (int i = 0; i < a.size(); i++) {
        System.out.println(a.get(i));
    }
     
    === 
    //via un iterator:
     
    for (Iterator<String> iter = a.iterator(); iter.hasNext();  ) {
        System.out.println(iter.next());
    }
     
    ===
    l'avantage d'avoir des lists, c'est qu'il est possible d'ajouter, supprimer des éléments facilement sans redimensionner, d'utiliser des iterator, des méthodes de list comme sort...

    N'oublie pas de faire un clear de tes lists et de setter la référence à null avant de quitter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arrList.clear();
    arrList = null;
    Si la réponse vous a aidé, pensez à cliquer sur +1

  12. #32
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    En fait j'aimerais faire un truc qui ressemble à ça si on veut ^^
    Même si c'est faux de chez faux et qu'éclipse me le dit xD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    List<String>[] mData = new List<String>[buttonId.length];
    boucle{
        mData[i] = new ArrayList<String>();
    }

  13. #33
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<ArrayList<String>> maCollecGenerale = new ArrayList<ArrayList<String>>(NB_DONNEES);
     
    for (int i = 0; i < NB_DONNEES; ++i)
    	maCollecGenerale.add(new ArrayList<String>());
    ?

    Les tableaux, c'est bien quand y'a pas de conteneur de données "évolué", ou pour des usages constants vu que leur taille est fixe. Pour le reste par contre ...

    Je suis curieux de voir l'interface nécessitant autant de liste en tout cas ^^
    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

  14. #34
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Haha bah en fait c'est tout con.
    En gros t'as une liste par période de publication: journalier, trimestriel, annuel,... (6 en tout ^^)

  15. #35
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Bon voilà un code terminé = un code à débuguer et là c'est vraiment bizarre. on m'a dit que c'est mon qui ne renvoyait pas de valeur (ce qui n'est pas possible).

    Voilà mon code:

    ===================
    Activité principale
    ===================
    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    package rapport.presse.cim;
     
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Vector;
     
    import rapport.presse.cim.R.id;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
     
     
    public class First extends Fragment {
     
     
    	final String urlView1="http://192.168.1.100/cimPresse.php?donnee=getName&country=all";
    	final String urlView2="http://192.168.1.100/cimPresse.php?donnee=getName&country=be";
    	final String urlView3="http://192.168.1.100/cimPresse.php?donnee=getName&country=lu";
     
    	/**
             * 
             * Enumération pour la déclaration des boutons et la gestion des cliques
             * **/
    	enum ButtonId{
    		mButtonAll(R.id.all),
    		mButtonQuot(R.id.quot),
    		mButtonHebd(R.id.hebd),
    		mButtonMens(R.id.mens),
    		mButtontrim(R.id.trim),
    		mButtonAnn(R.id.ann);
     
    		private int resId;
    		private ButtonId(int r){
    			this.resId = r;
    		}
    		public int getResId(){
    			return this.resId;
    		}	
    	}
     
    	enum ListViewId{
    		mListViewAll(R.id.ListViewAll),
    		mListViewQuot(R.id.ListViewQuot),
    		mListViewHebd(R.id.ListViewHebd),
    		mListViewMens(R.id.ListViewMens),
    		mListViewTrim(R.id.ListViewTrim),
    		mListViewAnn(R.id.ListViewAnn);
     
    		private int resId;
    		private ListViewId(int r){
    			this.resId = r;
    		}
    		public int getResId(){
    			return this.resId;
    		}
    	}
     
    	enum ArrayAdapterId{
    		mAdapterAll(android.R.layout.simple_list_item_1),
    		mAdapterQuot(android.R.layout.simple_list_item_1),
    		mAdapterHebd(android.R.layout.simple_list_item_1),
    		mAdapterMens(android.R.layout.simple_list_item_1),
    		mAdapterTrim(android.R.layout.simple_list_item_1),
    		mAdapterAnn(android.R.layout.simple_list_item_1);
     
    		private int resId;
    		private ArrayAdapterId(int r){
    			this.resId = r;
    		}
    		public int getResId(){
    			return this.resId;
    		}
    	}
     
     
     
     
    	/**===============================================
            Création des list de donnée pour chaque listView
            ===============================================**/ 
    	/**public List<String> mDataAll = new ArrayList<String>();
            public List<String> mDataQuot = new ArrayList<String>();
            public List<String> mDataHebd = new ArrayList<String>();
            public List<String> mDataMens = new ArrayList<String>();
            public List<String> mDataTrim = new ArrayList<String>();
            public List<String> mDataAnn = new ArrayList<String>();**/
     
    	/**===============================================
                            Déclaration des différents adaptateur
            ===============================================**/ 
    	//public ArrayAdapter<String> mAdapterAll, mAdapterQuot, mAdapterHebd, mAdapterMens, mAdapterTrim, mAdapterAnn;
     
    	/**===============================================
                    Déclaration des listView
            ===============================================**/ 
    	//public ListView mListViewAll, mListViewQuot, mListViewHebd, mListViewMens, mListViewTrim, mListViewAnn;
     
     
    	@SuppressWarnings("unchecked")
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		View v= inflater.inflate(R.layout.first, container, false); 
     
     
    		/**=======================================================
                    Appel des Class asynchrone pour remplir les adaptateurs
                    =======================================================**/ 
    		//new AsyncDownloadAll().execute(urlView1, "periode", "allPeriode", mData[i]); 
    		/**new AsyncDownloadQuot().execute(urlView1, "periode", "daily");
                    new AsyncDownloadHebd().execute(urlView1, "periode", "weekly");
                    new AsyncDownloadMens().execute(urlView1, "periode", "monthly");
                    new AsyncDownloadTrim().execute(urlView1, "periode", "quarterly");
                    new AsyncDownloadAnn().execute(urlView1, "periode", "annual");**/
     
     
     
     
    		/**===============================================
                                    Création des adaptateurs
                    ===============================================**/ 
    		/**mAdapterAll = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAll);
                    mAdapterQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataQuot);
                    mAdapterHebd= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataHebd);
                    mAdapterMens= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataMens);
                    mAdapterTrim= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataTrim);
                    mAdapterAnn= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mDataAnn);**/
     
    		/**===============================================
                            Appel des layouts des ListView et button +
                                  Initialisation des cliques 
                    ===============================================**/ 
     
    		ButtonId[] buttonId = ButtonId.values();
    		Button[] buttonMap = new Button[buttonId.length];
     
    		ListViewId[] listViewId = ListViewId.values();
    		ListView[] listViewMap = new ListView[listViewId.length];
     
    		//List<String>[] mData = new ArrayList[buttonId.length]();
     
    		ArrayAdapterId[] arrayAdapterId = ArrayAdapterId.values();
    		ArrayAdapter[] arrayAdapterMap = new ArrayAdapter[buttonId.length];
    		//List<String>[] mData = new List<String>[buttonId.length];
    		List<ArrayList<String>> mDataMap = new ArrayList<ArrayList<String>>(buttonId.length);
     
    		for (int i = 0; (i < buttonId.length); i++){
    			buttonMap[i] = (Button) v.findViewById(buttonId[i].getResId());
    			listViewMap[i] = (ListView) v.findViewById(listViewId[i].getResId());
    			listViewMap[i].setVisibility(View.GONE);
    			arrayAdapterMap[i] = new ArrayAdapter<String>(this.getActivity(), arrayAdapterId[i].getResId(), mDataMap.get(i));
     
    			buttonMap[i].setOnClickListener(new MyListViewListener(listViewMap[i]));
     
    			listViewMap[i].setAdapter(arrayAdapterMap[i]);
     
    			listViewMap[i].setOnItemClickListener(new MyListViewItemListener(mDataMap.get(i), getActivity()));
     
    			mDataMap.add(new ArrayList<String>());
     
    			new AsyncDownload(mDataMap.get(i), arrayAdapterMap[i]).execute(urlView1, "periode", "allPeriode"); 
    		}
    		/**===============================================
                                    Appel des layouts des listView
                    ===============================================**/ 
    		/**mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
                    mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
                    mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
                    mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
                    mListViewTrim = (ListView) v.findViewById(R.id.ListViewTrim);
                    mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);**/
     
    		/**===============================================
                            Gestion de l'affichage des listView
                    ===============================================**/ 
    		/**mListViewAll.setVisibility(View.GONE);
            mListViewQuot.setVisibility(View.GONE);   
                    mListViewHebd.setVisibility(View.GONE);
                    mListViewMens.setVisibility(View.GONE);
                    mListViewTrim.setVisibility(View.GONE);
                    mListViewAnn.setVisibility(View.GONE);**/
     
    		/**===============================================
                            On lie les listView à leur adaptateur
                    ===============================================**/ 
    		/**mListViewAll.setAdapter(mAdapterAll);
                    mListViewQuot.setAdapter(mAdapterQuot);
                    mListViewHebd.setAdapter(mAdapterHebd);
                    mListViewMens.setAdapter(mAdapterMens);
                    mListViewTrim.setAdapter(mAdapterTrim);
                    mListViewAnn.setAdapter(mAdapterAnn);**/
     
     
    		/**===============================================
                            Gestion des cliques dans les listView
                    ===============================================**/ 
    	/**mListViewAll.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataAll.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});
                    
                    mListViewQuot.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataQuot.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});
                    
                    mListViewHebd.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataHebd.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});
                    
                    mListViewMens.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataMens.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});
                    
                    mListViewTrim.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataTrim.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});
                    
                    mListViewAnn.setOnItemClickListener(new OnItemClickListener(){
     
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    // TODO Auto-generated method stub
                                    String choix = mDataAnn.get(position);
                                    Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
                                    mObjetBundle.putString("choix", choix);
                                    Intent t = new Intent(getActivity(), Tableau.class); //permet d'appeler la nouvelle activité
                                    t.putExtras(mObjetBundle);
                                    startActivity(t);
                                    
                    }});**/
    		return v;
    	}
    ========================================
    Mon listener de ListView (pas méga utile vu l'erreur):
    ========================================
    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
    package rapport.presse.cim;
     
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ListView;
     
    public class MyListViewListener implements OnClickListener {
    	private ListView listView;
     
        public MyListViewListener (ListView listView) {
            this.listView = listView;
        }
     
        public void onClick(View v) {
            if(listView.isShown()){
                listView.setVisibility(View.GONE);
            }
            else{
                listView.setVisibility(View.VISIBLE);
            }
        }
    }
    =============================
    Ma gestion des cliques dans une liste:
    =============================
    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
    package rapport.presse.cim;
     
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ListView;
     
    public class MyListViewListener implements OnClickListener {
    	private ListView listView;
     
        public MyListViewListener (ListView listView) {
            this.listView = listView;
        }
     
        public void onClick(View v) {
            if(listView.isShown()){
                listView.setVisibility(View.GONE);
            }
            else{
                listView.setVisibility(View.VISIBLE);
            }
        }
    }
    =================
    Ma classe AsyncTask
    =================
    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
    package rapport.presse.cim;
     
    import java.io.InputStream;
    import java.util.List;
     
    import android.os.AsyncTask;
    import android.support.v4.app.FragmentActivity;
    import android.widget.ArrayAdapter;
     
    public class AsyncDownload extends AsyncTask<String, Void, List<String>> {
     
    	public HttpConnexion mHttpConnexion = new HttpConnexion();
    	public InputStream mInputStream;
    	private List<String> mData;
    	private ArrayAdapter mArrayAdapter;
     
    	public AsyncDownload(List<String> mData, ArrayAdapter arrayAdapterMap){
    		this.mData = mData;
    		this.mArrayAdapter = arrayAdapterMap;
    	}	
     
    	@Override
    	protected List<String> doInBackground(String... params) {
    		// TODO Auto-generated method stub
    		String url = params[0];
    		String key= params[1];
    		String periode = params[2];
    		mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    		String res = mHttpConnexion.convertToString(mInputStream);
    		mData = mHttpConnexion.parseJsonFile(res);
    		return mData;	
    	}
     
    	@Override
    	protected void onPostExecute(List<String> result) {
    		super.onPostExecute(result);
    		if (result != null){
    			mData=result;
    			mArrayAdapter.clear();
    			for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i) // Ligne modifiée
    				mArrayAdapter.add(str);
    			}
    			mArrayAdapter.notifyDataSetChanged();
    		}
    	}	
    }
    =================================
    Et enfin le rapport d'erreur tant attendu -_-
    =================================
    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
    12-27 23:56:40.863: E/AndroidRuntime(560): FATAL EXCEPTION: main
    12-27 23:56:40.863: E/AndroidRuntime(560): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    12-27 23:56:40.863: E/AndroidRuntime(560):         at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at java.util.ArrayList.get(ArrayList.java:304)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at rapport.presse.cim.First.onCreateView(First.java:160)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.View.measure(View.java:12723)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.View.measure(View.java:12723)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.View.measure(View.java:12723)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.View.measure(View.java:12723)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.os.Handler.dispatchMessage(Handler.java:99)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.os.Looper.loop(Looper.java:137)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at android.app.ActivityThread.main(ActivityThread.java:4424)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at java.lang.reflect.Method.invokeNative(Native Method)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at java.lang.reflect.Method.invoke(Method.java:511)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    12-27 23:56:40.863: E/AndroidRuntime(560):         at dalvik.system.NativeStart.main(Native Method)
    Voilà j'espère que vous trouverez mon erreur ^^

  16. #36
    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
    Si la ligne 160 est bien celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrayAdapterMap[i] = new ArrayAdapter<String>(this.getActivity(), arrayAdapterId[i].getResId(), mDataMap.get(i));
    Tu as un tableau totalement vide la-dedans.
    Selon l'erreur, il n'est pas indiqué un souci vis-à-vis de la reprise de longueur d'un conteneur.
    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

  17. #37
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais j'ai vu ça, et j'ai compris pq ^^
    En fait mon asyncTask je la lançais à la fin (doué vu que c'est elle qui s'occupe de remplir les tableaux -_-).

    Par contre nouvelle erreur (trop beau pour être vrai :'( )
    Voici mes modif:

    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
    for (int i = 0; (i < buttonId.length); i++){
     
    			mDataMap.add(new ArrayList<String>());
     
    			new AsyncDownload(mDataMap.get(i), arrayAdapterMap[i]).execute(urlView1, "periode", "allPeriode");
     
    			arrayAdapterMap[i] = new ArrayAdapter<String>(this.getActivity(), arrayAdapterId[i].getResId(), mDataMap.get(i));
     
    			buttonMap[i] = (Button) v.findViewById(buttonId[i].getResId());
     
    			listViewMap[i] = (ListView) v.findViewById(listViewId[i].getResId());
    			listViewMap[i].setVisibility(View.GONE);
     
     
    			buttonMap[i].setOnClickListener(new MyListViewListener(listViewMap[i]));
     
    			listViewMap[i].setAdapter(arrayAdapterMap[i]);
     
    			listViewMap[i].setOnItemClickListener(new MyListViewItemListener(mDataMap.get(i), getActivity()));
     
    		}
    et ici j'ai un peu préciser les types pour voir si ça ne jouait pas un peu ^^
    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
    package rapport.presse.cim;
     
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
     
    import android.os.AsyncTask;
    import android.support.v4.app.FragmentActivity;
    import android.util.Log;
    import android.widget.ArrayAdapter;
     
    public class AsyncDownload extends AsyncTask<String, Void, List<String>> {
     
    	public HttpConnexion mHttpConnexion = new HttpConnexion();
    	public InputStream mInputStream;
    	public List<String> mData = new ArrayList<String>();
    	public ArrayAdapter<String> mArrayAdapter;
     
    	public AsyncDownload(List<String> mData, ArrayAdapter<String> arrayAdapterMap){
    		this.mData = mData;
    		this.mArrayAdapter = arrayAdapterMap;
    	}	
     
    	@Override
    	protected List<String> doInBackground(String... params) {
    		// TODO Auto-generated method stub
    		String url = params[0];
    		String key= params[1];
    		String periode = params[2];
    		mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
    		String res = mHttpConnexion.convertToString(mInputStream);
    		mData = mHttpConnexion.parseJsonFile(res);
    		return mData;	
    	}
     
    	@Override
    	protected void onPostExecute(List<String> result) {
    		super.onPostExecute(result);
    		if (result != null){
    			mData=result;
    			mArrayAdapter.clear();
    			for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i) // Ligne modifiée
    				mArrayAdapter.add(str);
    			}
    			mArrayAdapter.notifyDataSetChanged();
    		}
    	}	
    }
    et le code d'erreur :s

    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
    12-28 14:15:32.735: E/AndroidRuntime(1294): FATAL EXCEPTION: main
    12-28 14:15:32.735: E/AndroidRuntime(1294): java.lang.NullPointerException
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at rapport.presse.cim.AsyncDownload.onPostExecute(AsyncDownload.java:41)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at rapport.presse.cim.AsyncDownload.onPostExecute(AsyncDownload.java:1)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.os.AsyncTask.finish(AsyncTask.java:602)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.os.AsyncTask.access$600(AsyncTask.java:156)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.os.Looper.loop(Looper.java:137)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at java.lang.reflect.Method.invokeNative(Native Method)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at java.lang.reflect.Method.invoke(Method.java:511)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    12-28 14:15:32.735: E/AndroidRuntime(1294): 	at dalvik.system.NativeStart.main(Native Method)
    Bon donc mon ArrayAdapter est vide et pourtant les données sont bien chargées depuis la bdd (le logCat confirme ça :s)

    Je comprend vraiment pas pourtant mon code ressemble (en plus dynamique) à mon code précédent où je déclarais tout -_-

  18. #38
    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
    Tu as une NullPointerException (NPE), l'une des exceptions les plus communes de Java. Elle indique que tu invoques une méthode sur une variable non-initialisée, ou que tu passes une variable dans cet état à une méthode qui ne le supporte pas.

    Ainsi, il est indiqué ceci :
    at rapport.presse.cim.AsyncDownload.onPostExecute(AsyncDownload.java:41)
    Donc, cette erreur est soulevée dans la classe rapport.presse.cim.AsyncDownload, dans la méthode onPostExecute, c'est à dire dans le fichier AsyncDownload.java, à la ligne 41.
    Cette ligne est ceci (si je me réfère à la numérotation de ton fichier) :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    mArrayAdapter.clear();
    Ici, aucun doute possible, mArrayAdapter est null au moment de l'appel du onPostExecute, donc après ton traitement.
    Attention, qu'il soit null est totalement différent de sa quantité. La variable existe, mais ne "contient" rien.

    Vérifie avec un débogueur, ou un Log.e("PRESSE CIM", "Test nullité", (mArrayAdapter == null ?)+""; AVANT l'invocation de clear.
    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

  19. #39
    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
    Inversion des lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			new AsyncDownload(mDataMap.get(i), arrayAdapterMap[i]).execute(urlView1, "periode", "allPeriode");
     
    			arrayAdapterMap[i] = new ArrayAdapter<String>(this.getActivity(), arrayAdapterId[i].getResId(), mDataMap.get(i));
    En fait, la tâche devrait être faite en dernier, vu qu'on ne sait pas trop quand elle va s'executer, il faut tout initialiser avant....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  20. #40
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais on m'a fait remarquer ça hier, j'avais mal compris la ligne d'initialisation de l'adaptateur (vu qu'il prenait mes data en paramètre).

    Merci en tout cas pour l'aide ^^

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

Discussions similaires

  1. Debutant - Question de syntaxe "::" seuls devant u
    Par Caille dans le forum Débuter
    Réponses: 3
    Dernier message: 08/02/2006, 15h59
  2. Question de syntaxe
    Par dafalri dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 13/12/2005, 20h57
  3. [XML] Questions de syntaxe
    Par ghohm dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/11/2005, 12h08
  4. question sur syntaxe d'une requete
    Par sparis dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/09/2005, 11h58
  5. [C linux makefile] question de syntaxe
    Par Ultros dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 09/04/2004, 07h58

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