Jump to content

[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"
   >





Edited by gp4004
Link to comment
Share on other 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!

Edited by Profete162
Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...