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 des données dans une ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 52
    Points
    52
    Par défaut Affichage des données dans une ListView
    bonjour ,
    j'ai réussi à récupérer des données ( qui sont 2 strings) à partir d'une base mysql distante grâce un web servive restfull.J'ai un petit problème , car j'ai pas pu l'afficher que dans le logcat alors je compte les afficher dans une listeview.
    Quel type d'apater je dois utiliser ?
    Est ce que quelqu'un peut me proposer une solution pour l'affichage dans une listview?

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 76
    Points
    76
    Par défaut
    Coucou,
    Il faut que tu ré implémentes un ArrayAdapter que tu donneras à la liste view. apres le chargement de tes données.
    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
     
    public class TrainComplexeArrayAdapter extends ArrayAdapter<TonBean> {
     
    	private List<TonBean> tonBeanList;
     
    	public TrainComplexeArrayAdapter(Context context, int viewResourceId,
    			List<TonBean> tonBeanList) {
    		super(context, viewResourceId, tonBeanList);
    		this.tonBeanList= tonBeanList;
    	}
     
    	public View getView(int position, View convertView, ViewGroup parent) {
    		View v = convertView;
    		if (v == null) {
    			LayoutInflater vi = (LayoutInflater) this.getContext()
    					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    			v = vi.inflate(R.layout.ton_layout_item, null);
    		}
    		TonBean tonBean = tonBeanList.get(position);
    		if (tonBean != null) {
    			TextView textView1 = (TextView) v
    					.findViewById(R.id.textView1);
    			TextView textView2 = (TextView)		            v.findViewById(R.id.textView2);
     
    			textView1.setText(tonBean.getText1());
    			textView2.setText(tonBean.getText2());
    		}
    		return v;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
    	android:padding="6dip" android:orientation="vertical">
    			<TextView android:id="@+id/textView1"
    				android:layout_width="0dip" android:layout_height="fill_parent"
    				android:layout_weight="1" android:gravity="center_vertical|left"
    				android:typeface="normal" android:textStyle="bold" android:textSize="20px" />
    <TextView android:id="@+id/tewtView2"
    				android:layout_width="0dip" android:layout_height="fill_parent"
    				android:layout_weight="1" android:gravity="center_vertical|left"
    				android:typeface="normal" android:textStyle="bold" android:textSize="20px" />
    </LinearLayout>
    Bon là c'est un exmple pour l'afficher dans une liste view ou chaque item est séparer en 2 textview.
    Tu es pas obligé de faire ça tu peux utiliser qu'un seul textview dans ce cas pas forcement besoin de ré implémenter la array, tu peux utiliser une ArrayAdapter<String> directement et fournir une concaténation des tes 2 strings.
    Le code plus haut a été écris à la va vite pas sur qu'il marche directement, mais c'est l'idée général.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Bonjour,
    Utilise un ArrayAdapter, regarde les tutos sur les listview et c'est vite fait.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    moi j'ai un peu le même problème, j'ai réussi à afficher les données de ma bdd mysql dans mon émulateur, mais j'aimerais les mettre dans une listview seulement je ne suis pas sure de la méthode à suivre. J'ai lu les post ci-dessous mais comment l'adapter à mon code

    voici mon code :
    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
    public class BDDAlarm extends Activity {
        /** Called when the activity is first created. */
        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 à la bdd");    
            txt.setText(getServerData(strURL));   
        }  
       public static final String strURL = "http://10.0.2.2:8080/mesRequestes/Alarm.php";      
       private String getServerData(String returnString) {  
           InputStream is = null;  
           String result = "";  
           ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
           nameValuePairs.add(new BasicNameValuePair("alarm",""));   
           try{  
               HttpClient httpclient = new DefaultHttpClient();
               HttpPost httppost = new HttpPost(strURL);  
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
               HttpResponse response = httpclient.execute(httppost);    
               is = response.getEntity().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();  
               Log.i("result", result);
           }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++){  
                  JSONObject json_data = jArray.getJSONObject(i);  
                  // Affichage ID_ville et Nom_ville dans le LogCat  
                   Log.i("log_tag","ID_ALARM: "+json_data.getInt("ID_ALARM")+  
                           ", ID_OBJECT: "+json_data.getInt("ID_OBJECT"));  
                   returnString += "\n\t" + jArray.getJSONObject(i);   
               }  
           }catch(JSONException e){  
               Log.e("log_tag", "Error parsing data " + e.toString());  
          }  
          return returnString;   
       }  
    }
    et mon xml :
    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
    <?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"
        />
     <ListView
     	android:layout_width="wrap_content"
     	android:layout_height="wrap_content"
     	android:id="@+id/listalarm">
     	</ListView>
    </LinearLayout>
    Merci de votre aide

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 76
    Points
    76
    Par défaut
    Il faut que ta fonction getServerData renvoie une liste de donnée, tu peux faire une liste de map ou une liste de bean, à toi de voir, ensuite avec un simpleadapter
    Sinon un conseil, ton getServerData doit être appelé dans un thread à part que l'UIThread car sinon tu bloques l'affichage, utilise la classe AsyncTask.
    Je te dis ça car sur Android 3.0 tu peux pas faire de connexion http dans le uithread, il t'envoie bouler.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par themouton Voir le message
    Il faut que ta fonction getServerData renvoie une liste de donnée, tu peux faire une liste de map ou une liste de bean, à toi de voir, ensuite avec un simpleadapter
    Sinon un conseil, ton getServerData doit être appelé dans un thread à part que l'UIThread car sinon tu bloques l'affichage, utilise la classe AsyncTask.
    Je te dis ça car sur Android 3.0 tu peux pas faire de connexion http dans le uithread, il t'envoie bouler.
    Je travail sur Android 2.2 mais il faut mieux faire un code qui puisse s'adapter sur tout =)

    Et tu veux que je fasse une liste de map ou de bean mais je ne peux pas utiliser arraylist aussi?
    tu peux me donner la syntaxte pour map et bean stp?

    Comment on utilise la classe AsyncTask?

    Merci

    ---EDIT---
    J'ai changé de forum pour mon pb, je vois que tu m'aide sur l'autre aussi donc je laisse celui pour d'autre personnes merci.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 76
    Points
    76
    Par défaut
    Pour info ArrayList est une implémentation de l'interface de List, donc c'est pareil. Ensuite pour le AsyncTask la javadoc donne un très bonne exemple.

Discussions similaires

  1. Reprendre des données dans une listview (c#)
    Par miky-mike dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/05/2010, 11h48
  2. Insérer des données dans une ListView
    Par Vincinho dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/05/2010, 17h08
  3. Affichage des données dans une LISTE dans projet GWT
    Par sino100100 dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 27/04/2009, 19h03
  4. affichage des donnes dans une datagridview
    Par daloul dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/04/2008, 08h04
  5. limite de l'affichage des donnés dans une Bdgrid
    Par helmis dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2006, 09h15

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