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 :

Parcourir element bdd android


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut Parcourir element bdd android
    Bonjour ,

    J'aurais une question pour mon code en développement android si possible !

    Voici les lignes de codes qui me permettent d'afficher mon listView :

    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
     
     private JSONObject lireJson() {
                String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv";
                InputStream is = null;
                String result = "";
                JSONArray jArray = null;
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(myurl);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
                    jArray = new JSONArray(result);
     
                    return (JSONObject) jArray.get(0);
                } catch (Exception e) {
                    erreurWS = true;
                    e.printStackTrace();
                    return null;
                }
            }
     
     
            private void jsonToTextView(JSONObject json) {
                try {
                    // Getting JSON Object
     
                    JSONObject c = json;
     
     
                    // Storing JSON item in a Variable
                    int idR = c.getInt("idR");
                    String lieuR = c.getString("lieuR");
                    String dateR = c.getString("dateR");
                    String dureeR = c.getString("dureeR");
     
                    p = new heure(lieuR, dateR, dureeR);
                    p.setId(idR);
     
                    genererTweets();
     
     
                    for (int j = 0; j < c.getJSONArray("voiture").length(); j++) {
                        JSONObject e = c.getJSONArray("voiture").getJSONObject(j);
                        int idV = e.getInt("idV");
                        String plaque = e.getString("plaque");
                        String marque = e.getString("marque");
     
     
                        Voiture voiture = new Voiture(plaque, marque);
                        voiture.setIdV(idV);
     
                        genererTweets();
                        tweets.add(new Voiture(voiture.getMarqueV(), voiture.getPlaqueImmatriculationV()));
     
                        p.ajoutVoiture(voiture);
                    }
     
                } catch (JSONException e) {
                    e.printStackTrace();
                }
     
            }
        }
    }
    Le probléme dans ce code , c'est que cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jArray = new JSONArray(result);
     
                    return (JSONObject) jArray.get(0);
    me permet de retourner l'element [0] de ma base de donnée , j'aimerai afficher TOUT les elements de ma base de donnée , donc parcourir mes élément .

    Le contexte : Je dois afficher touts les elements car mon application affichera une multitudes de rendez-vous et donc je dois afficher , pour chaque rendez-vous , les voitures utilisés , avecn quels moniteurs etc ....


    Merci d'avance !!

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Comme son nom l'indique, un JSONArray est un tableau d'éléments donc si tu veux out afficher, il suffit de faire une boucle pour le parcourir. Ensuite, la complexité dépend de la structure du JSON
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Salut,

    Citation Envoyé par krowry Voir le message
    me permet de retourner l'element [0] de ma base de donnée , j'aimerai afficher TOUT les elements de ma base de donnée , donc parcourir mes élément .

    Le contexte : Je dois afficher touts les elements car mon application affichera une multitudes de rendez-vous et donc je dois afficher , pour chaque rendez-vous , les voitures utilisés , avecn quels moniteurs etc ....
    Pour afficher toutes les données, tu dois utiliser une boucle qui va parcourir ton jsonArray et récupérer tour à tour les jsonObject qui ne sont que des lignes de jsonArray. Voici un exemple pour te donner une idée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JSONArray jsonArray = null;
            try {
                jsonArray = new JSONArray("result");
                for(int i =0; i<jsonArray.length(); i++){
                    //Récupérer une ligne
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    //Exploiter la ligne...
                    //......
                }
            } catch (JSONException e) {
                Log.e("TonActivity", e.getMessage());
            }
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Quelques pistes pour te permettre d'afficher ça dans une listview :

    En texte : Android listview: load data from json

    En vidéo :
    Gahfy - Développeur Android Freelance - Suivez-moi sur Twitter

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Bonjour !

    Déjà merci pour vos réponses ,

    J'ai essayé les deux solutions , malheureusement je n'arrive toujours pas à afficher tous les éléments ...

    Gahfy , j'ai bien lu ton tuto en essayant maintes et maintes fois , mais toujours rien je n'arrive pas à afficher sur mon mobile tous les enregistrements que je veux , il ne m'en affiche toujours qu'un ...

    MasterMbg pareil , je n'arrive pas à parcourir avec le code que tu m'a fourni ...

    C'est peut-être et certainement moi qui galére et qui gére mal la concept de ' boucles ' mais aprés plusieurs tentatives je n'arrive toujours pas à parcourir ...

    Merci d'avance!

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Montres-nous un extrait de ton JSON. Puis montres nous ton code où tu utilises les JSONArray et JSONObjet.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Bonjour ,

    Tu veux parler du JSONAdapter ? Voilà :

    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
     
    public JSONAdapter(Context context, List<Voiture> f, List<Moniteur> moni) {
            super(context, 0, f);
        }
     
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
     
            if(convertView == null){
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_entree,parent, false);
            }
     
     
            TweetViewHolder viewHolder = (TweetViewHolder) convertView.getTag();
            if(viewHolder == null){
                viewHolder = new TweetViewHolder();
                viewHolder.lieu = (TextView) convertView.findViewById(R.id.lieuR);
                viewHolder.duree = (TextView) convertView.findViewById(R.id.dureeR);
                viewHolder.date = (TextView) convertView.findViewById(R.id.dateR);
                viewHolder.plaque = (TextView) convertView.findViewById(R.id.plaque);
                viewHolder.marque = (TextView) convertView.findViewById(R.id.marque);
                viewHolder.nom = (TextView) convertView.findViewById(R.id.nom);
                viewHolder.prenom = (TextView) convertView.findViewById(R.id.prenom);
                viewHolder.adresse = (TextView) convertView.findViewById(R.id.adresse);
                viewHolder.telephone = (TextView) convertView.findViewById(R.id.telephone);
     
     
                convertView.setTag(viewHolder);
            }
     
            //getItem(position) va r�cup�rer l'item [position] de la List<Tweet> tweets
            Voiture f = getItem(position);
     
            //il ne reste plus qu'� remplir notre vue
            viewHolder.marque.setText(f.getMarqueV());
            viewHolder.plaque.setText(f.getPlaqueImmatriculationV());
     
     
            //viewHolder.avatar.setImageDrawable(new ColorDrawable(f.getColor()));
     
            return convertView;
        }
    Pour ce qui est du JSONArray et JSONObject , voici les lignes de code qui l'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     protected Void doInBackground(Void... args) {
                JSONObject jsonProduits = lireJson(); //r�cup�ration du Json
                if (!erreurWS)
                    jsonToTextView(jsonProduits); //mise � jour de la TextView
                return null;
            }
    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
     
           protected void onPostExecute(Void result) {
                pDialog.dismiss();
                if (erreurWS) {
                    Context context = getApplicationContext();
                    CharSequence text = "Erreur lors de l'accés au service Web";
                    int duration = Toast.LENGTH_SHORT;
                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();
     
                } else {
                    //mListView = (ListView) findViewById(R.id.listView);
                    List<Voiture> tweets = genererTweets();
                    List<Moniteur> moni = genererMoni();
     
                    JSONAdapter adapter = new JSONAdapter(MyActivity.this, tweets,moni);
                    mListView.setAdapter(adapter);
                }
            }
     
     
     
            private JSONObject lireJson() {
                String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv";
                InputStream is = null;
                String result = "";
                JSONArray jArray = null;
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(myurl);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
                    jArray = new JSONArray(result);
     
                    return (JSONObject) jArray.get(3);
                } catch (Exception e) {
                    erreurWS = true;
                    e.printStackTrace();
                    return null;
                }
            }
     
     
            private void jsonToTextView(JSONObject json) {
                try {
                    // Getting JSON Object
     
                    JSONObject c = json;
                    JSONObject m = json;
     
     
                    // Storing JSON item in a Variable
                    int idR = c.getInt("idR");
                    String lieuR = c.getString("lieuR");
                    String dateR = c.getString("dateR");
                    String dureeR = c.getString("dureeR");
     
                    p = new heure(lieuR, dateR, dureeR);
                    p.setId(idR);
     
                    genererTweets();
                    genererMoni();
     
     
                    for (int j = 0; j < c.getJSONArray("voiture").length(); j++) {
                        JSONObject e = c.getJSONArray("voiture").getJSONObject(j);
                        int idV = e.getInt("idV");
                        String plaque = e.getString("plaque");
                        String marque = e.getString("marque");
     
     
                        Voiture voiture = new Voiture(plaque, marque);
                        voiture.setIdV(idV);
     
                        genererTweets();
                        tweets.add(new Voiture(voiture.getMarqueV(), voiture.getPlaqueImmatriculationV()));
     
                        p.ajoutVoiture(voiture);
                    }
     
                    for (int j = 0; j < m.getJSONArray("moniteur").length(); j++) {
                        JSONObject e = m.getJSONArray("moniteur").getJSONObject(j);
                        int idM = e.getInt("idM");
                        String nom = e.getString("nom");
                        String prenom = e.getString("prenom");
                        String adresse = e.getString("adresse");
                        String telephone = e.getString("telephone");
     
     
                        Moniteur moniteur = new Moniteur(nom, prenom,adresse,telephone);
                        moniteur.setIdM(idM);
     
                        genererMoni();
                        moni.add(new Moniteur(moniteur.getNomM(), moniteur.getPrenomM(),moniteur.getAdresseM(),moniteur.getTelephoneM()));
     
                        p.ajoutMoniteur(moniteur);
                    }
     
                } catch (JSONException e) {
                    e.printStackTrace();
                }
     
            }
        }
    }

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Non, je parle d'un extrait du JSON.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Le web-service est en ligne , voici l'adresse : " http://siomende.fr/anoll/Vala/ws/ws.php?action=getRdv "

  10. #10
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Je pense que la structure même du code est pas bonne.
    Si je rentre au tout début de la discussion, je constate que ta méthode lireJSON au fait ne renvoie que le premier élément de la liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (JSONObject) jArray.get(0);
    Donc le reste est mis dans les oubliettes c'est pourquoi tu ne te retrouve qu'avec une seule ligne.

    Christian Djo
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Oui c'est exactement çà , et c'est pour je ne veux pas que le reste soit mis aux oubliettes et que je demande de l'aide ici car je n'ai aucune idée de savoir comment réparer çà ...
    Je pensais que en fesant une boucle pour parcourrir tous les éléments je pourrais avec le reste de mes éléments ...

    Mais du coup je ne vois pas du tout comment faire pour avoir tous mes elements aux lieu d'en avoir qu'un seul ...

  12. #12
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Tu peux nous monter où est ce que tu as mis la boucle en question dans ton code stp?

    Christian Djo,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Eh bien du coup j'ai essayer çà :

    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
     
       private JSONObject lireJson() {
                String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv";
                InputStream is = null;
                String result = "";
                JSONArray jsonArray = null;
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(myurl);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
                    jsonArray = new JSONArray(result);
                    for(int i=0; i<jsonArray.length();i++)
     
                        return (JSONObject) jsonArray.get(i);
     
                } catch (Exception e) {
                   Log.e("MyActivity",e.getMessage());
                }
            }
    Le probléme c'est que a la fin de mon code il y a une erreur me donnant deux choix :
    - Make "LireJson" return void
    - Add return statment

    L'un met ma fonction " LireJson" en void, ce qui donne pleins d'erreurs , l'autre m'ajoute un " return null " a la fin de ma fonction .

  14. #14
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bon, je te proposerais ceci :

    Que ta méthode lireJSON() renvoie plutôt une chaîne de caractères qui est la réponse renvoyée par le serveur quoi. En suite tu crées une autre méthode extractJSON(String stringJson) dans laquelle tu vas parcourir le JSONArray obtenu de la chaîne passée en paramètre.

    Concrètement, voici la méthode lireJSON :
    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
    private String lireJson() {
                String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv";
                InputStream is = null;
                String result = "";
                JSONArray jsonArray = null;
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(myurl);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
     
                    return result;
     
                } catch (Exception e) {
                   Log.e("MyActivity",e.getMessage());
                   return null;
                }
            }
    Et la méthode extractJSON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void extractJSON(String stringJSON){
             JSONArray jsonArray = new JSONArray(stringJSON);
     
             for(int i=0; i<jsonArray.length();i++){
                //Récupération d'un jsonObject et extraction de données comme montré un peu plus haut dans la discussion
             }
    }
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Le probléme c'est que si je mes lireJson en String , j'ai des erreurs comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         protected Void doInBackground(Void... args) {
                JSONObject jsonProduits = lireJson(); //r�cup�ration du Json
                if (!erreurWS)
                    jsonToTextView(jsonProduits); //mise � jour de la TextView
                return null;
            }
    Ou il me demande donc du String ... Et si je mes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          protected Void doInBackground(Void... args) {
                String jsonProduits = lireJson(); //r�cup�ration du Json
                if (!erreurWS)
                    jsonToTextView(jsonProduits); //mise � jour de la TextView
                return null;
            }
    Il me dit au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jsonToTextView(jsonProduits); //mise � jour de la TextView
    jsontoTextView in JSONParse cannot be applied to Java.lang.String

  16. #16
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bon, peux tu mettre un peu de côté ce que tu as déjà fait (pour ne pas trop mélanger les choses avec ce que nous sommes entrain de faire ) et permettre à ce qu'on réfléchisse ensemble?

    Si oui, commence par changer le type de la méthode doInBackround... de la classe qui hérite d'AsyncTask d Void en String? Ce qui donnera un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected String doInBackground(Void... args) {
                //Ici tu renvoie comme valeur la réponse du serveur...
                return lireJSON();
            }
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Biensur que l'ont peux mettre de coté ce que j'ai fait , mon but est que le code marche et vue que je suis débutant il y a de fortes chances qu'il y ai des erreurs dans ce que j'ai fait , donc oui on peux le mettre de coté .

    J'ai fait ce que tu m'a demandé , par contre , dés que je lance l'application , sa tourne dans le video " Veuillez Patientez " , je pense que le probléme viens de fait que , la methode extractJSON et le JSONArray jsonArray ne sont jamais utilisé d'apres mon code ... Il y a marqué extractJSON is never used et pareil pour jsonArray ... Même jsonToTextView "n'ai pas utilisé" ...

    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
     
     
     private String lireJson() {
                String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv";
                InputStream is = null;
                String result = "";
                JSONArray jsonArray = null;
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(myurl);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
     
                    return result;
     
                } catch (Exception e) {
                    Log.e("MyActivity",e.getMessage());
                    return null;
                }
            }
     
     
            private void extractJSON(String stringJSON) throws JSONException {
                JSONArray jsonArray = new JSONArray(stringJSON);
     
                for(int i=0; i<jsonArray.length();i++){
                    //Récupération d'un jsonObject et extraction de données comme montré un peu plus haut dans la discussion
                }
            }
     
            private void jsonToTextView(JSONObject json) {
                try {
                    // Getting JSON Object
     
                    JSONObject c = json;
                    JSONObject m = json;
     
     
                    // Storing JSON item in a Variable
                    int idR = c.getInt("idR");
                    String lieuR = c.getString("lieuR");
                    String dateR = c.getString("dateR");
                    String dureeR = c.getString("dureeR");
     
                    p = new heure(lieuR, dateR, dureeR);
                    p.setId(idR);
     
                    genererTweets();
                    genererMoni();
     
     
                    for (int j = 0; j < c.getJSONArray("voiture").length(); j++) {
                        JSONObject e = c.getJSONArray("voiture").getJSONObject(j);
                        int idV = e.getInt("idV");
                        String plaque = e.getString("plaque");
                        String marque = e.getString("marque");
     
     
                        Voiture voiture = new Voiture(plaque, marque);
                        voiture.setIdV(idV);
     
                        genererTweets();
                        tweets.add(new Voiture(voiture.getMarqueV(), voiture.getPlaqueImmatriculationV()));
     
                        p.ajoutVoiture(voiture);
                    }
     
                    for (int j = 0; j < m.getJSONArray("moniteur").length(); j++) {
                        JSONObject e = m.getJSONArray("moniteur").getJSONObject(j);
                        int idM = e.getInt("idM");
                        String nom = e.getString("nom");
                        String prenom = e.getString("prenom");
                        String adresse = e.getString("adresse");
                        String telephone = e.getString("telephone");
     
     
                        Moniteur moniteur = new Moniteur(nom, prenom,adresse,telephone);
                        moniteur.setIdM(idM);
     
                        genererMoni();
                        moni.add(new Moniteur(moniteur.getNomM(), moniteur.getPrenomM(),moniteur.getAdresseM(),moniteur.getTelephoneM()));
     
                        p.ajoutMoniteur(moniteur);
                    }
     
                } catch (JSONException e) {
                    e.printStackTrace();
                }
     
            }
        }
    }

  18. #18
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Un peu de patience ...

    Bon, je peux voir le code ta classe qui étend AsyncTask?

    Christian Djo,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Patience ... Mouais j'en ai marre ! XD

    Ce qui etend Asynctask c'est JSONPARSE , voici ce que j'ai de JSONPARSE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            if (reseauOK()) {
                new JSONParse().execute();
                mListView = (ListView) findViewById(R.id.listrdv);

  20. #20
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bah, j'avais demander le code complet de la classe JSONPARSE. Qu'à cela ne tienne, je te propose ma solution (à adapter à ton cas précis).

    Premièrement, créer des modèle qui vont représenter les données à extraire. J'ai créer trois modèles selon la structure du résultat renvoyé par le serveur. Il y a:
    - Voiture :
    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
    package com.christianmbangala.brigthsolution.search;
     
    /**
     * Created by MasterMbg on 29/03/2016.
     */
    public class Voiture {
        long idV;
        String plaque, marque;
     
        public Voiture(long _id, String _plaque, String _marque) {
            this.idV = _id;
            this.plaque = _plaque;
            this.marque = _marque;
        }
     
        public void setIdV(long idV) {
            this.idV = idV;
        }
     
        public void setMarque(String marque) {
            this.marque = marque;
        }
     
        public void setPlaque(String plaque) {
            this.plaque = plaque;
        }
     
        public long getIdV() {
            return idV;
        }
     
        public String getMarque() {
            return marque;
        }
     
        public String getPlaque() {
            return plaque;
        }
     
        @Override
        public String toString() {
            return idV + ", " + plaque + ", " + marque;
        }
    }
    - Moniteur :
    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
    package com.christianmbangala.brigthsolution.search;
     
    /**
     * Created by MasterMbg on 29/03/2016.
     */
    public class Moniteur {
        long idM;
        String nom, prenom, adresse, telephone;
     
        //Constructeur
        public Moniteur(long _id, String _nom, String _prenom, String _adresse, String _telephone){
            this.idM = _id;
            this.nom = _nom;
            this.prenom = _prenom;
            this.adresse = _adresse;
            this.telephone = _telephone;
        }
     
        public void setAdresse(String adresse) {
            this.adresse = adresse;
        }
     
        public void setIdM(long idM) {
            this.idM = idM;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
     
        public long getIdM() {
            return idM;
        }
     
        public String getAdresse() {
            return adresse;
        }
     
        public String getNom() {
            return nom;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public String getTelephone() {
            return telephone;
        }
     
        @Override
        public String toString() {
            return idM + ", " + nom + ", " + prenom ;
        }
    }
    - Principal (Je n'ai pas trouver mieux , donc à modifier au besoin) :
    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
    package com.christianmbangala.brigthsolution.search;
     
    /**
     * Created by MasterMbg on 29/03/2016.
     */
    public class Principal {
     
        long idR;
        String lieuR, dateR;
        long dureeR;
        Voiture voiture;
        Moniteur moniteur;
     
        public Principal(long _id, String _lieu, String _date, long _duree, Voiture _voiture, Moniteur _moniteur){
            this.idR = _id;
            this.lieuR = _lieu;
            this.dateR = _date;
            this.dureeR = _duree;
            this.voiture = _voiture;
            this.moniteur = _moniteur;
        }
     
        public void setDateR(String dateR) {
            this.dateR = dateR;
        }
     
        public void setDureeR(long dureeR) {
            this.dureeR = dureeR;
        }
     
        public void setIdR(long idR) {
            this.idR = idR;
        }
     
        public void setLieuR(String lieuR) {
            this.lieuR = lieuR;
        }
     
        public void setMoniteur(Moniteur moniteur) {
            this.moniteur = moniteur;
        }
     
        public void setVoiture(Voiture voiture) {
            this.voiture = voiture;
        }
     
        public long getDureeR() {
            return dureeR;
        }
     
        public long getIdR() {
            return idR;
        }
     
        public Moniteur getMoniteur() {
            return moniteur;
        }
     
        public String getDateR() {
            return dateR;
        }
     
        public String getLieuR() {
            return lieuR;
        }
     
        public Voiture getVoiture() {
            return voiture;
        }
    }
    Ensuite, Voici comment se présente à son tour la classe qui étend AsycTask (Je l'ai appelée Task) :
    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
    class Task extends AsyncTask{
     
        @Override
        protected void onPreExecute() {
            //ton code Ici, Rien ne change...
        }
     
        @Override
        protected String doInBackground(Object[] params) {
            String result = lireJSON();
            return result;
        }
     
        @Override
        protected void onPostExecute(Object o) {
            ArrayList<Principal> listPrincipal = new ArrayList<>();
            Principal principal;
            Voiture voiture;
            Moniteur moniteur;
     
            try {
                JSONObject jsonObject_principal = null;
                JSONArray jsonArray = new JSONArray(String.valueOf(o));
                for(int i = 0; i < jsonArray.length(); i++){
                    jsonObject_principal = jsonArray.getJSONObject(i);
                    //Extraction des données
                    //Voiture
                    JSONArray jsonArrayVoiture = jsonObject_principal.getJSONArray("voiture");
                    JSONObject jsonObject_voiture = jsonArrayVoiture.getJSONObject(0);
                    voiture = new Voiture(jsonObject_voiture.getLong("idV"), jsonObject_voiture.getString("plaque"), jsonObject_voiture.getString("marque"));
                    //Moniteur
                    JSONArray jsonArrayMoniteur = jsonObject_principal.getJSONArray("moniteur");
                    JSONObject jsonObject_moniteur = jsonArrayMoniteur.getJSONObject(0);
                    moniteur = new Moniteur(jsonObject_moniteur.getLong("idM"),
                            jsonObject_moniteur.getString("nom"),
                            jsonObject_moniteur.getString("prenom"),
                            jsonObject_moniteur.getString("adresse"),
                            jsonObject_moniteur.getString("telephone"));
     
                    principal = new Principal(jsonObject_principal.getLong("idR"),
                            jsonObject_principal.getString("lieuR"),
                            jsonObject_principal.getString("dateR"),
                            jsonObject_principal.getLong("dureeR"),
                            voiture,
                            moniteur);
     
                    //Ajouter Principal dans la liste
                    listPrincipal.add(principal);
                }
     
                //Effectuer le traitement sur les données présentes dans la liste
                //........................
                //........................
                /*
                UN EXEMPLE D'UTILISATION DE LA LISTE
                ----------------------------------------------
                for(Principal p : listPrincipal){
                    System.out.println("Principal");
                    System.out.println("=========");
                    System.out.println("Id : " + p.getIdR());
                    System.out.println("Lieu : " + p.getLieuR());
                    System.out.println("Durée : " + p.getDureeR());
                    System.out.println("Date : " + p.getDateR());
                    System.out.println("Voiture : " + p.getVoiture().toString());
                    System.out.println("Moniteur : " + p.getMoniteur().toString());
                    System.out.println("==============================================");
                    System.out.println();
                */
     
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    Bonne programmation

    Christian Djo,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

Discussions similaires

  1. Hébergeur BDD Android
    Par Badshade23 dans le forum Android
    Réponses: 6
    Dernier message: 31/03/2016, 14h58
  2. Réponses: 6
    Dernier message: 26/06/2013, 12h16
  3. Utilisation BDD Android/Serveur via HttpURLConnection
    Par Android_Syad dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/11/2010, 15h20
  4. Parcourir les elements d'une ligne crée dynamiquement dans un FORM
    Par redabadache3 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/12/2008, 14h30
  5. Ajouter/Modifier/Supprimer des elements d'une bdd
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 31/03/2008, 18h39

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