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 :

Erreur dans le format JSON


Sujet :

Android

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Erreur dans le format JSON
    Bonsoir tout le monde,
    je suis debutante en Android et Java.je travail sur mon memoire .


    depuis plus d'une semaine,je n'arrive pas à récupere mes données dans une liste.

    j'ai reussi à etablir la connexion avec Mysql,d'ou j'ai recupere les données dans le logcat,mais dans la liste je n'y arrive pas

    s'il vous plait aider moi à ressoudre le problème.

    Merci

    voici mon code:

    1)code java

    a)ConnexionBDD.java

    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
    package com.example.foodoran;
     
    import java.io.BufferedReader;
     
    import java.io.InputStream;
     
    import java.io.InputStreamReader;
     
    import java.util.ArrayList;
     
    import org.apache.http.HttpResponse;
     
    import org.apache.http.client.HttpClient;
     
    import org.apache.http.client.methods.HttpPost;
     
    import org.apache.http.impl.client.DefaultHttpClient;
     
    import org.json.JSONArray;
     
    import org.json.JSONException;
     
    import android.os.AsyncTask;
     
    import android.widget.ListView;
     
    public class ConnexionBDD  extends AsyncTask <Object, Object, Object>{
     
    @Override
     
    protected Object doInBackground(Object... params) {
     
    Restaurant restaurant;
     
    //ArrayList<Restaurant >listeRestaurants;
     
     ArrayList<Restaurant> listeRestaurants =new ArrayList<Restaurant>();
     
    StringBuffer stringB=new StringBuffer("");
     
    BufferedReader bufr=null;
     
    try{
     
    HttpClient client=new DefaultHttpClient();
     
    HttpPost requete = new HttpPost("http://192.168.56.1/requeteAndroid/requete.php");
     
    HttpResponse reponse=client.execute(requete);
     
    System.out.println("CONNEXION REUSSIE !!");
     
    InputStream is= reponse.getEntity().getContent();
     
    bufr=new BufferedReader(new InputStreamReader(is));
     
    //lire le contenu des données recuperent
     
    String ligneLue=bufr.readLine();
     
    while (ligneLue!= null){
     
    stringB.append(ligneLue);
     
    stringB.append("\n");
     
    ligneLue=bufr.readLine();
     
    }
     
    }catch(Exception e){
     
    //e.printStackTrace();
     
    System.err.println("PAS DE CONNEXION : " + e);
     
    }
     
     try{
     
    JSONArray jArray=new JSONArray(stringB.toString());
     
    for(int i=0; i<jArray.length();i++){
     
     restaurant=new Restaurant();
     
    // listeRestaurants=new ArrayList<Restaurant>();
     
    restaurant.setNom(jArray.getJSONObject(i).getString("Nom").toString()); 
     
    restaurant.setRue(jArray.getJSONObject(i).getString("Specialité").toString());
     
    //on met les données dans la liste
     
    listeRestaurants.add(restaurant);
     
    }
     
    }catch(JSONException jex){
     
    jex.printStackTrace();
     
    }
     
    //return stringB;
     
     return listeRestaurants;
     
    }}
    b) AdapterResto.java:

    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
    package com.example.foodoran;
     
    import java.util.ArrayList;
     
    import android.content.Context;
     
    import android.view.LayoutInflater;
     
    import android.view.View;
     
    import android.view.ViewGroup;
     
    import android.widget.BaseAdapter;
     
    import android.widget.TableLayout;
     
    import android.widget.TextView;
     
    public class AdapterResto extends BaseAdapter {
     
    private Context context;    //l'activité dans laquelle on sera lorsqu'on aura besoin d'appeler l'adaptater
     
    private LayoutInflater OInflater; //permet de lier les données avec le Layout que nous avons créer
     
        private ArrayList<Restaurant >listeRestaurants;
     
        public  AdapterResto(Context pcontext, ArrayList<Restaurant >plisteRestauarnt){
     
       this.context=pcontext;
     
       this.listeRestaurants=plisteRestauarnt;
     
       this.OInflater=LayoutInflater.from(this.context);
     
        }
     
    @Override
     
    public int getCount(){ 
     
    return this.listeRestaurants.size();
     
    }
     
    @Override
     
    public Object getItem(int pPosition) {// recuperer l'item à une position bien definie à l'interieur de la liste
     
    return this.listeRestaurants.get(pPosition);
     
    }
     
    @Override
     
    public long getItemId(int pPosition) {
     
    return pPosition ;
     
    }
     
    @SuppressWarnings("unused")
     
    @Override
     
    public View getView(int pPosition, View pConvertView, ViewGroup pParent) {
     
    TableLayout tLayoutItem; 
     
    if(pConvertView==null){
     
    tLayoutItem=(TableLayout)OInflater.inflate(R.layout.liste_recherche,pParent, false);//attache le données à patir de tableLayout
     
    }else{
     
    tLayoutItem=(TableLayout)pConvertView;
     
    }//on recuperer les données dans la BDD
     
    TextView textRestaurant=(TextView)tLayoutItem.findViewById(R.id.resto);
     
    textRestaurant.setText(this.listeRestaurants.get(pPosition).getNom().toString().trim());
     
    TextView textSpe=(TextView)tLayoutItem.findViewById(R.id.sp);
     
    textRestaurant.setText(this.listeRestaurants.get(pPosition).getSpecialité().toString().trim());
     
    return tLayoutItem;
     
    } 
     
    }
    c)ListeRestaurant.java:
    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
    package com.example.foodoran;
    import java.util.ArrayList;
    import java.util.concurrent.ExecutionException;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ListView;
    public class ListeRestaurant extends  Activity {
    Restaurant restaurant;
    ArrayList<Restaurant >listeRestaurants;
    @SuppressWarnings("unchecked")
    protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_liste_restaurant);
            ConnexionBDD connecteur = new ConnexionBDD ();
    connecteur.execute();
    ArrayList<Restaurant> listeRestautants = null;
    try {
    //StringBuffer sb = (StringBuffer) connecteur.get();
    listeRestautants = (ArrayList<Restaurant>) connecteur.get();
    System.out.println("LISTE RESTAURANTS : " + listeRestautants);
    } catch (InterruptedException e) {
    //e.printStackTrace();
    System.err.println(e);
    } catch (ExecutionException e) {
    //e.printStackTrace();
    System.err.println(e);
    }
    if(listeRestaurants != null){
       AdapterResto adapter = new AdapterResto(this,listeRestaurants );
       ListView listeViewResto=(ListView) findViewById(R.id.listRestaurant); 
       listeViewResto.setAdapter(adapter);
       }
    }
    }
    2)code xml:

    a)liste_recherche.xml:

    Code xml : 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
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
        xmlns:tools="http://schemas.android.com/tools"
     
        android:layout_width="fill_parent"
     
        android:layout_height="fill_parent" >
     
        <TableRow
     
            android:id="@+id/tableRow1"
     
            android:layout_width="wrap_content"
     
            android:layout_height="wrap_content"
     
            tools:ignore="UselessParent" >
     
            <TextView
     
                android:id="@+id/resto"
     
                android:layout_width="wrap_content"
     
                android:layout_height="wrap_content"
     
                android:layout_gravity="left"
     
                android:layout_column="0"
     
                android:textSize="20sp"
     
                android:textStyle="italic"
     
                tools:ignore="RtlHardcoded"
     
                android:visibility="visible" />
     
            <TextView
     
                android:id="@+id/sp"
     
                android:layout_width="wrap_content"
     
                android:layout_height="wrap_content"
     
                android:textSize="15sp"
     
                android:layout_column="1"
     
                android:textStyle="italic"
     
                android:visibility="visible" />
     
        </TableRow>
     
    </TableLayout>
    b)main.xml:

    Code xml : 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
    <?xml version="1.0" encoding="utf-8"?>
     
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
        android:layout_width="match_parent"
     
        android:layout_height="match_parent"
     
        android:background="@color/rouge"
     
         >
     
        <TextView
     
            android:id="@+id/textView1"
     
            android:layout_width="wrap_content"
     
            android:layout_height="wrap_content"
     
            android:layout_alignParentTop="true"
     
            android:layout_centerHorizontal="true"
     
            android:text="@string/oran" />
     
        <include
     
            android:id="@+id/lstRestaurant"
     
            android:layout_width="wrap_content"
     
            android:layout_height="wrap_content"
     
            layout="@layout/liste_recherche" />
     
     
    </RelativeLayout>

  2. #2
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour,

    Plusieurs point qui me laisse perplexe sur les bouts de code que tu nous adonné :

    1) Si je comprend bien, tu exécute des scripts PHP pour accéder a ta db, il est beaucoup plus intéressant de passer par une api (tu peux faire des vérification, c'est facile a maintenir, c'est plus modulable et c'est surtout plus simple d'utilisation du coté client, etc...).

    2) Je vois que dans ton adapter tu override plusieurs fonction. Ce n'est pas forcement necessaire vue que pour certaine, tu fais exactement ce qu'elle font de base...
    Il y a de plus des erreurs qui augmente le temps d’exécution de ton adapter.
    Tu peux essayer quelque chose comme ca:

    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.example.foodoran;
     
    import java.util.ArrayList;
     
    import android.content.Context;
     
    import android.view.LayoutInflater;
     
    import android.view.View;
     
    import android.view.ViewGroup;
     
    import android.widget.BaseAdapter;
     
    import android.widget.TableLayout;
     
    import android.widget.TextView;
     
    public class AdapterResto extends BaseAdapter {
     
        public  AdapterResto(Context pcontext, ArrayList<Restaurant >plisteRestauarnt){
             super(context, R.layout, R.id.textViewInLayout, plisteRestaurant)
        }
     
    @Override
     
    public int getCount(){ 
     
    return this.listeRestaurants.size();
     
    }
     
     
    @Override
     
    public long getItemId(int pPosition) {
     
    return pPosition ;
     
    }
     
    @SuppressWarnings("unused")
     
    @Override
     
    public View getView(int pPosition, View pConvertView, ViewGroup pParent) {
     
    View tLayoutItem = super.getView(pPosition, pConvertView, pParent);
     
    TextView textRestaurant=(TextView)tLayoutItem.findViewById(R.id.resto);
     
    textRestaurant.setText(super.getItem(pPosition).getNom().toString().trim());
     
    TextView textSpe=(TextView)tLayoutItem.findViewById(R.id.sp);
     
    textRestaurant.setText(super.getItem(pPosition).getSpecialité().toString().trim());
     
    return tLayoutItem;
     
    } 
     
    }
    J'ai pas tout vérifié mais tu peux optimiser ta mémoire et ton temps d’exécution en virant tes list (l'adapter stock déja toute les données) et virant ton inflate (l'adapter stock aussi ta vue) et en faisant des appel a super.

    3) Le layout que tu utilise pour la ListView et un TableLayout. Le souci étant que pour chaque ligne de ta liste, ton adapter va créer un nouveau TableLayout d'une seule ligne. tu va donc te retrouver avec plein de tableau d'une ligne... Si c'est pour ca, tu peux utiliser un Linear ou un relative a la place...

    4) Dans ton main.xml, je vois que tu fais un Include pour ajouter ta ListView, enfin c'est ce que je pense que tu souhaite faire parce que ca n'est pas du tout le cas.
    Ce que tu fais, c'est que tu include le code de ton layout dans le premier, autrement dit, tu ajoute ton TableLayout dans ton main.xml. Il n'y a donc jamais de listView dans ton main.xml.
    Je suis étonné que tu n'ai pas d'exception lorsque tu essai de caster :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       AdapterResto adapter = new AdapterResto(this,listeRestaurants );
       ListView listeViewResto=(ListView) findViewById(R.id.listRestaurant); 
       listeViewResto.setAdapter(adapter);
    Remplace ton include par une ListView et ca devrait être déjà beaucoup mieux!!

    GLHF

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Merci pour ta repose.
    Au fait,j'ai inclu la listView et TableLayoout dans le main,mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <include
            android:id="@+id/lstRestaurant"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            layout="@layout/liste_recherche" />
    </RelativeLayout>
    liste_recherche;c'est l'Id de TableLayout.
    ok,je vais essayer d'utiliser LinearLayout et modifier l'adapter pour voir le resultat.
    je ferai un petit recherche sur l'utilisation de L'Api.

  4. #4
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    L'include permet d'ajouter une vue xml dans une autre et non pas de creer une ListView juste parce que tu appelle son id listView.
    Est-ce que tu as compris comment intégrer une ListView dans un xml??

    Remplace ta balise include par une balise ListView. Si tu veux récuperer une ListView, il te faut une balise ListView dans ton xml...

  5. #5
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832

  6. #6
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Passe le sujet en résolut alors, cela pourra aider les futurs recherche

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci pour ton aide

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

Discussions similaires

  1. Erreur conversion données au format JSON
    Par lekonquerant dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 07/11/2014, 11h44
  2. erreur dans le json format
    Par salyiohh dans le forum Langage
    Réponses: 2
    Dernier message: 28/07/2013, 15h21
  3. [Débutant] Supprimer le format Json dans WebApi
    Par Elmer_Bacon dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 22/11/2012, 14h54
  4. erreur dans mon format html
    Par mario94 dans le forum Langage
    Réponses: 7
    Dernier message: 24/07/2012, 19h06
  5. lecture dans un format json
    Par viny dans le forum jQuery
    Réponses: 15
    Dernier message: 24/01/2011, 23h50

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