IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

stocker des données Json dans une listview


Sujet :

Composants graphiques Android

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut stocker des données Json dans une listview
    Salut , cette application android est connectée à une base de données mysql , un fichier php me permet de se connecter à la base de données et exécuter une requête, puis l'envoyer en JSON vers l'appli
    et voici la résultat :


    mais moi je veux lister ces résultats affichés comme une sorte de ListView et non pas un txtview, je sais que je dois stocker mes données parsées en json (qui sont déjà dans un jsonarray ) dans un adapterarray puis les affichées dans une liste ,mais je ne sais pas comment faire. aidez moi svp
    Ps: je suis débutant en android .
    voici les codes :
    code 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
    package com.exemple.ville;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import com.exemple.*;
     
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.LinearLayout;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
     
    public class ville extends Activity {
    	TextView txt;
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		LinearLayout rootLayout = new LinearLayout(getApplicationContext());  
    		txt = new TextView(getApplicationContext());  
     
    		rootLayout.addView(txt);  
    		setContentView(rootLayout);  
    		txt.setText("Connexion..."); 
    		txt.setText(getServerData(strURL)); 
    	}
     
    	public static final String strURL = "http://192.168.1.10/ville.php";
     
    	private String getServerData(String returnString) {
    		InputStream is = null;
    		String result = "";
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair("ville","P"));
     
     
    		try{
    			HttpClient httpclient = new DefaultHttpClient();
    			HttpPost httppost = new HttpPost(strURL);
    			httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			HttpResponse response = httpclient.execute(httppost);
    			HttpEntity entity = response.getEntity();
    			is = entity.getContent();
     
    		}catch(Exception e){
    			Log.e("log_tag", "Error in http connection " + e.toString());
    		}
     
    		try{
    			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();
    		}catch(Exception e){
    			Log.e("log_tag", "Error converting result " + e.toString());
    		}
     
    		try{
    			JSONArray jArray = new JSONArray(result);
    			for(int i=0;i<jArray.length();i++){
    				HashMap<String, String> map = new HashMap<String, String>();	
    				JSONObject json_data = jArray.getJSONObject(i);
     
    				Log.i("log_tag","ID_ville: "+json_data.getInt("ID_ville")+
    						", Nom_ville: "+json_data.getString("Nom_ville"));
     
    				returnString += "\n\t" + jArray.getJSONObject(i); 
    			}
    		} catch(JSONException e){
    			Log.e("log_tag", "Error parsing data " + e.toString());
    		}
    		return returnString;
     
     
    	}
    }
    code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      mysql_connect("localhost","root","***");
      mysql_select_db("bdVille");
      $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
      while($row=mysql_fetch_assoc($sql))
      $output[]=$row;
      print(json_encode($output));<image><image/></image>
      mysql_close();
    ?>

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Tu peux transformer ton JSONArray en une ArrayList d'une classe que t'aura créé et ensuite utiliser un BaseAdapter que t'auras personnalisé.
    En fait t'as même pas besoin de tout ça, tu peux faire une classe qu'extends BaseAdapter et qui reçois un JSONArray pour le transformer en ListView.

    Ou alors tu créer une base de données SQLite dans ton application et tu ajoutes les données dans la base à partir du JSONArray.
    Ensuite tu récupères un JCursor et il existe des CursorAdapter, voir même SimpleCursorAdapter.

    Tu peux copier ta base de données dans ton application et comme ça tu fais les requêtes directement dans l'application.
    En plus l'utilisateur n'aura pas à tout télécharger à chaque fois et il pourra utiliser l'application hors ligne.
    Keith Flint 1969 - 2019

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut stocker des donées Json dans une listeview personalisé
    Bjr SVP j'ai besoin d'aide,je suis sur un projet android, je veux récupérer des produits avec leurs images dans une base de donnée mysql, j'ai suivi des toto mais j'ai pas reussi,Merci

  4. #4
    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
    L'élément clé est l'Adapter. C'est lui qui va injecter les données (préalablement parsées de ton JSON) dans chaque item de la ListView.
    Tu n'as pas le choix, si tu veux réussir, tu vas devoir étudier cela de plus près.

    PS1 : tu vas avoir besoin d'un item customisé, donc d'un Adapter customisé
    PS2 : ton image tu peux la transférer directement dans le JSON, au format Base64 (c-a-d une grosse chaîne de caractères)
    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

Discussions similaires

  1. Comment ajouter des données json dans un listView
    Par sarra7 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 15/04/2015, 03h38
  2. Problème d’ajouter des données JSON dans une ListView
    Par amirmejrii dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 05/03/2012, 21h43
  3. Réponses: 0
    Dernier message: 24/07/2007, 13h22
  4. [Conception] Stocker des fichiers multimédia dans une base de données
    Par haifa84 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/03/2006, 17h47
  5. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11

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