Aller au contenu

[RÉSOLU] alimenter une liste ListView


gp4004

Recommended Posts

Bonjour à tous,

je me décide à poster en désespoir de cause :

Je fais une appli qui attaque un script php qui retourne un fichier xml

J'arrive à parser ce fichier, ej stock ce qui m'intéresse dans un tableau ArrayList.

j'essaye depuis 2 jours d'alimenter une liste clickable avec les valeurs de ce tableau, et je n'y arrive pas.

J'ai beau avoir regardé x tutos, les docs google, rien, je ne sais plus comment m'y prendre...

J'arrive juste à afficher le contenu de mon tableau dans un TextView (c'est déjà ça)

si quelqu'un peut m'aider, me donner une piste... merci!

MyAppli.java :

package my.appli;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;


public class MyAppli extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.main);  
         Button btOk = (Button) findViewById(R.id.Button01);

         btOk.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               TextView monTexte =(TextView)findViewById(R.id.TextView01);
               EditText maRecherche = (EditText)findViewById(R.id.EditText01);

               if (maRecherche.getText().toString().trim().length()<=2){
                   monTexte.setText("Recherche impossible !");
               }else{
                   try {                                                
                       String texteRecherche = maRecherche.getText().toString();

                       String saisieUtilisateur = texteRecherche.replace(" ", "+");
                       URL url = new URL("htt://www.mon.site?q="+saisieUtilisateur+"&xml");

                       /* Get a SAXParser from the SAXPArserFactory. */
                       SAXParserFactory spf = SAXParserFactory.newInstance();
                       SAXParser sp = spf.newSAXParser();

                       /* Get the XMLReader of the SAXParser we created. */
                       XMLReader xr = sp.getXMLReader();
                       /* Create a new ContentHandler and apply it to the XML-Reader*/
                       XmlHandler myHandler = new XmlHandler();
                       xr.setContentHandler(myHandler);

                       /* Parse the xml-data from our URL. */
                       xr.parse(new InputSource(url.openStream()));
                       /* Parsing has finished. */
                       /* Set the result to be displayed in our GUI. */

                        ArrayList<?> tableauRetour = myHandler.getParsedData();
                        String myString = "";

                        for(int i=0; i                             ArrayList<?> tmp= (ArrayList<?>) tableauRetour.get(i);
                            myString =myString+(i+1)+" - "+tmp.get(1)+"\n";
                        }
                        if (myString.hashCode()!=0){
                             monTexte.setText(myString);
                        }else{
                           monTexte.setText("Aucun resultat !");
                        } 


                   } catch (Exception e) {
                       /* Display any Error to the GUI. */
                       monTexte.setText("Error: " + e.getMessage());              
                   }
             }
           }
         });    
    }


}

main.xml :

<?xml version="1.0" encoding="utf-8"?>
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >





Modifié par gp4004
Lien vers le commentaire
Partager sur d’autres sites

Je pense qu'en cherchant un listarray adapter , tu devrais trouver ton bonheur. ( EDIT: houps pris de vitesse!)

Je dois en avoir un qui traine dans mes applis. Si tu ne trouves vraiment rien, je posterai quand je retrouverai mon Mac avec Eclipse!

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

Merci à tous les 2 pour vos réponses!

je vais regarder du côté du listarray adapter...

Ce qui me manque, c'est la méthode, je ne sais plus si je dois faire quoique ce soit sur mon layout main ou faire un second layout (qui comprendrait quoi d'ailleurs?)

C'est la première fois que je suis aussi paumé sur un langage, ça fout les boules

Lien vers le commentaire
Partager sur d’autres sites

en gros ( vraiment désolé mais pas de temps ce soir, je prends déjà pas mal pour te répondre:

public class XXXX extends ListActivity {

//blabla comme une activité normale

}

Tu rajoutes une listview dans ton xml:

         

et tu crées un adapteur qui va te remplir gentillement ta liste. Il y a des centaines de tuto sur les listview sur le net, (je m excuse encore une fois d'être si rapide et pas filer de lien, mais vraiment facile à choper)

Le reste, ce sera du copier coller pour ta première listview, tu comprendras apres.. lol

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai finalement réussi, je ne suis pas devant ma machine, mais en gros il me manquait :

setContentView(R.layout.liste_produits); //liste_produits.xml contient un linearlayout et une listView id="@id/android:list"
setListAdapter (new ProduitAdapter(MonActivityActuelle.this,R.layout.liste_produits,listeProduits);
           //mon adapter utilise ligne_produit.xml composé d'un linearLayout et de 2 textView

ce qui me manquait depuis le début dans le setlistAdapter : MonActivityActuelle

Lien vers le commentaire
Partager sur d’autres sites

  • 4 weeks later...

Je relance un peu le sujet car je débute avec Android.

Je voudrais rajouter sur chacun de mes item de la liste, un listener...

Seul problème je dois ajouter ceci dans le Handler ou je peux le mettre dans l'activité principale?

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...