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 :

Affichage de données avec une ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut Affichage de données avec une ListView
    salut,

    j'arrive à faire la connexion entre application android et mysql

    je travail avec android 2.3.3
    et j'arrive à récupérer une liste des ville qui répond au syntaxe de requête sql dans le script php

    le script php est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      mysql_connect("localhost","root","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));
      mysql_close();
    ?>

    le code dans l'application android est le suivant :
    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
    package com.exemple.ville;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    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 android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    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);  
     
    		// Définir le texte et appeler la fonction de connexion.  
    		txt.setText("Connexion..."); 
    		// Appeler la méthode pour récupérer les données JSON
    		txt.setText(getServerData(strURL)); 
    	}
     
    	// Mettre l'adresse du script PHP
    	// Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local.
    	public static final String strURL = "http://192.168.1.2/ville.php";
     
    	private String getServerData(String returnString) {
    		InputStream is = null;
    		String result = "";
    		// Envoyer la requête au script PHP.
    		// Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
    		// $_REQUEST['ville'] sera remplacé par L dans notre exemple.
    		// Ce qui veut dire que la requête enverra les villes commençant par la lettre L
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair("ville","L"));
     
    		// Envoie de la commande http
    		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());
    		}
     
    		// Convertion de la requête en string
    		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());
    		}
    		// Parse les données JSON
    		try{
    			JSONArray jArray = new JSONArray(result);
    			for(int i=0;i<jArray.length();i++){
    				JSONObject json_data = jArray.getJSONObject(i);
    				// Affichage ID_ville et Nom_ville dans le LogCat
    				Log.i("log_tag","ID_ville: "+json_data.getInt("ID_ville")+
    						", Nom_ville: "+json_data.getString("Nom_ville")
    				);
    				// Résultats de la requête
    				returnString += "\n\t" + jArray.getJSONObject(i);
    			}
    		}catch(JSONException e){
    			Log.e("log_tag", "Error parsing data " + e.toString());
    		}
    		return returnString; 
    	}
    le code de main.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    </LinearLayout>
    et lors de test dans l'emulator il m'affiche le résultat correcte sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://192.168.1.2/ville.php
    {"ID_ville":"4","Nom_ville":"Lyon"}

    mais but actuelle est comment afficher ce résultat sous forme de listview

    je pense que le composant listview répond à mon besoin mais s'il y'a d'autre composant graphique qui permet d'afficher les villes sous forme de liste n’hésite pas à m'aider

    donc le but est coté design

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 79
    Points
    79
    Par défaut
    Une Listview et un Adapter me semblent adéquats : http://www.vogella.com/articles/Andr...w/article.html

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    merci pour votre réponse

    mais si possible pouvez m'aidez à ajouter la notion de listview dans mon exemple précedent

  4. #4
    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
    Tiens... une application qui va crasher sur HC/ICS/JB....

    On ne fait pas d'appel réseau dans le thread de l'UI (onCreate, ou autre onXXXX). La méthode getServerData() ne doit donc pas y être appelée directement....

    Pour la ListView...
    http://developer.android.com/guide/t.../listview.html

    Tout dépend si c'est pour ICS ou non... pour ICS on va utiliser un loader...
    Sinon, il faut passer par une AsyncTask pour populer la liste....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Perte de données avec une ListView
    Par italia57 dans le forum Composants graphiques
    Réponses: 21
    Dernier message: 09/08/2012, 14h35
  2. Affichage des données dans une ListView
    Par nagca dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 14/06/2011, 15h37
  3. Réponses: 2
    Dernier message: 02/05/2011, 10h43
  4. affichage des données d'une bd dans une listview
    Par SALIA LOUA OLIVIER dans le forum VB.NET
    Réponses: 5
    Dernier message: 13/07/2010, 18h02
  5. [MySQL] Problème avec affichage des données d'une base MySQL
    Par leclone dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 12h40

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