Vous êtes sur la page 1sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

ARTICLES

PROGRAMMATION

Curriculum Vitae

DEVELOPPEMENT ANDROID / C# / JAVA

21 2010

juil

ANDROID // PROGRAMMATION

Rechercher

[Tutoriel Android] Partie 6 Les ListView


Un article de Pierre-Emmanuel Mercier 57 Commentaires Suivez moi sur twitter !

Android et les listes


Bonjour tous et bienvenue dans ce nouveau tutoriel qui aura pour sujet les ListView, sujet trs fcheux pour les novices du monde dAndroid. Tout dabord, je vais vous expliquer le cheminement des donnes pour les ListView. Comme son nom lindique, une ListView est une liste de vue comprenant des items ; pour afficher une liste ditem dans celle-ci, il lui faut un adaptateur de donnes. Comme chaque donne est diffrente selon lapplication, vous devez faire un adaptateur personnalis pour entreposer celle-ci et lafficher. Je vais vous montrer un exemple basique dune ListView avec un adaptateur nomm ArrayAdapter fourni avec Android. Tout dabord, on cre un nouveau projet avec pour seul information dans un layout principal, une ListView avec un id et sa taille ; comme-ceci : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xml%version="1.0"%encoding="utf68"?> % <LinearLayout%xmlns:android="http://schemas.android.com/apk/res/android" % android:orientation="vertical" % android:layout_width="fill_parent" % android:layout_height="fill_parent" % > % <ListView % android:id="@+id/lvListe" % android:layout_width="fill_parent" % android:layout_height="fill_parentA"> % </ListView> % </LinearLayout>

SURVIE

Vacances Sjour Voyage pas Cher sur Promovacances : Agence de Voyage, Promotions
www.promovacances.com

CATGORIES
Andengine (5) Android (21) Application (1) Articles (2) Non class (2) Programmation (31)

LIENS
Developpez Forum XNA FrAndroid Le Studio cration site internet bordeaux Site du zero SLouge Smartphone France

Puis dans notre activit principale, nous allons rcuprer notre ListView et lui affecter un adaptateur grce la mthode setAdapter. Ajoutons-y un objet de type ArrayAdapter, contenant une liste de String (pas les sous-vtements !) avec un layout gnrique ditem que fournit la plateforme par dfaut et enfin la liste des donnes. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 public%class%MonActivite%extends%Activity%{ % ListView%lvListe; % @Override % public%void%onCreate(Bundle%savedInstanceState)%{ % super.onCreate(savedInstanceState); % setContentView(R.layout.main); % lvListe%=%(ListView)findViewById(R.id.lvListe); % String[]%listeStrings%=%{"France","Allemagne","Russie"}; % lvListe.setAdapter(new%ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listeStrings)); % } % }

NUAGE
2D 9patch actions bars adapter

andengine api C++ camera Csharp ddms debogage Echec


exception flux gringerbeard honeycomb image

android

intent java kinect listener menu microsoft


nexus one notification Othello pilotes preferenceactivity programmation remoting

serialization SFML sprite statistique stream


tabhost teamspeak thread

tutoriel

tutorial

tweeter wifi

xml XNA

ArrayAdapter<Type de donnes>(le contexte,le style des items,les donnes);

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 1 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art


Rien de plus simple, lancez lapplication et voyez pas vous-mme. Mais le problme se corse un petit peu si lon dsire ajouter nos propres donnes, ce qui sera a 99.9% le cas Imaginons que nous allons faire une bibliothque avec des livres, je ne vais pas vous refaire un cour de JAVA sur les objets, donc on va directement crer ce qui nous faut pour cette bibliothque. La bibliothque sera dfinie comme une liste de type List. Puis, nous allons crer un objet de type livre comprenant un titre et un auteur. Par la suite, vous pouvez tendre les possibilits avec un ISBN, etc et afficher les informations lorsque lon clique dessus (tiens a me rappel un tutoriel o jai dj crit a Voici la composition du type Livre : 01 02 03 04 05 06 07 08 09 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 public%class%Livre%{ % private%String%titre; % private%String%auteur; % public%Livre(String%titre,%String%auteur)%{ % this.titre%=%titre; % this.auteur%=%auteur; % } % public%String%getTitre()%{ % return%titre; % } % public%void%setTitre(String%titre)%{ % this.titre%=%titre; % } % public%String%getAuteur()%{ % return%auteur; % } % public%void%setAuteur(String%auteur)%{ % this.auteur%=%auteur; % } % } ).

26/05/13 17:29

COMMENTAIRES RCENTS
Light_Z3R0 dans Tutoriel sur la srialisation en C# Partie 1 Dim69 dans [Tutoriel Android] Partie 16 Base de donnes azizachom dans [Tutoriel Android] Partie 14 Wifi Anael Lefebvre dans [Tutoriel Android] Partie 16 Base de donnes Anael Lefebvre dans [Tutoriel Android] Partie 16 Base de donnes

ARCHIVES
octobre 2012 (1) juin 2012 (1) janvier 2012 (2) novembre 2011 (1) octobre 2011 (3) juillet 2011 (3) juin 2011 (1) dcembre 2010 (4) octobre 2010 (3) septembre 2010 (5) juillet 2010 (8) avril 2010 (6)

Comme vous le voyez, on reste dans le B.A-BA de lobjet classique. Puis dans notre activit, on cre notre bibliothque. 1 List<Livre>%maBibliotheque%=%new%ArrayList<Livre>(); Puis, crons une fonction se nommant RemplirLaBibliotheque(); 01 02 03 04 05 06 07 08 09 10 11 private%void%RemplirLaBibliotheque()%{ % maBibliotheque.clear(); % maBibliotheque.add(new%Livre("Starcraft%2%:%Les%diables%du%ciel", "William6C%Dietz")); % maBibliotheque.add(new%Livre("L'art%du%dveloppement%Android",%"Mark Murphy")); % maBibliotheque.add(new%Livre("Le%seuil%des%tnbres",%"Karen%Chance")); % }

Jai ajout trois livres alatoires trouvs sur Amazon, mais vous pouvez en prendre dautres, je ne serais pas vex pour autant Maintenant, nous allons crer notre propre Adaptateur pour grer ces donnes. On va commencer par crer un layout qui formera notre item comme ceci :

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 2 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Cration itemlivre.xml Puis dans le fichier XML, on rajoutera 2 textview avec respectivement un id Titre et un id Auteur. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <?xml%version="1.0"%encoding="utf68"?> % <LinearLayout % xmlns:android="http://schemas.android.com/apk/res/android" % android:orientation="vertical" % android:layout_width="fill_parent" % android:layout_height="wrap_content"> % <TextView % android:id="@+id/tvTitre" % android:layout_width="fill_parent" % android:layout_height="wrap_content" % /> % <TextView % android:id="@+id/tvAuteur" % android:layout_width="fill_parent" % android:layout_height="wrap_content" % /> % </LinearLayout>

Cest simple mais efficace ! Nous voil avec un gabarit correct pour travailler, maintenant on va se pencher sur notre adaptateur personnalis. Crez une classe nomme LivreAdapter, hritant de la classe BaseAdapter.

Cration de classe LivreAdapter Voil, notre classe est gnre et on va pouvoir la modifier comme nous le voulons. Le gnrateur de classes rajouter directement les mthodes remplir pour le bon fonctionnement de ladaptateur, comme a nous naurons pas de temps perdre (merci Eclipse). On retrouvera ces mthodes : getCount() qui retournera le nombre dlments dans notre liste. getItem() qui retournera notre objet livre la position indique. getItemId() qui retournera lid du livre. getView() qui retournera la vue de litem pour laffichage.

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 3 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art


Rajoutons un type List<Livre> bibilo, dans notre classe et crons un constructeur par dfaut prenant une liste et un contexte en paramtres. Rajoutons aussi notre classe un LayoutInflater, qui aura pour mission de charger notre fichier XML pour litem, cest l que lon utilisatera le contexte. 01 02 03 04 05 06 07 08 09 10 11 List<Livre>%biblio; % LayoutInflater%inflater; % public%LivreAdapter(Context%context,List<Livre>%biblio)%{ % inflater%=%LayoutInflater.from(context); % this.biblio%=%biblio; % }

26/05/13 17:29

Vous suivez toujours ? Oui alors on continue ! Remplissons nos diffrentes mthodes, tout dabord getCount qui retournera la taille de la bibliothque. 1 @Override 2 % 3 4 5 6 7 public%int%getCount()%{ % return%biblio.size(); % }

Ensuite, la mthode getItem qui retournera litem. 1 2 3 4 5 6 7 @Override % public%Object%getItem(int%position)%{ % return%biblio.get(position); % }

Et la troisime, qui sera getItemId qui retournera la position de litem. 1 2 3 4 5 6 7 @Override % public%long%getItemId(int%position)%{ % return%position; % }

Maintenant la dernire, qui est la plus difficile au dbut mais vraiment au dbut ^^ Crons une classe juste avant cette mthode (oui on peut le faire en JAVA une classe dans une classe !) qui sera nomme ViewHolder. Elle nous servira mmoriser les lments de la liste en mmoire pour qu chaque rafraichissement lcran ne scintille pas (cest un genre de buffer comme en graphisme). 1 2 3 4 5 6 7 private%class%ViewHolder%{ % TextView%tvTitre; % TextView%tvAuteur; % }

Dans la mthode, nous allons utiliser un ViewHolder, puis nous allons vrifier que la view prsente nest pas null sinon nous allons la crer, et ensuite charger lXML en mmoire pour lattribuer notre objet. Et enfin tagguer notre objet pour pouvoir le rcuprer la prochaine mise jour graphique. Et pour finir, on y attribue les donnes et on retourne la vue. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Override % public%View%getView(int%position,%View%convertView,%ViewGroup%parent)%{ % ViewHolder%holder; % if(convertView%==%null)%{ % holder%=%new%ViewHolder(); % convertView%=%inflater.inflate(R.layout.itemlivre,%null); % holder.tvTitre%=%(TextView)convertView.findViewById(R.id.tvTitre); % holder.tvAuteur%=%(TextView)convertView.findViewById(R.id.tvAuteur); % convertView.setTag(holder); % }%else%{ % holder%=%(ViewHolder)%convertView.getTag(); % } % holder.tvTitre.setText(biblio.get(position).getTitre());

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 4 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art


26 27 28 29 30 31 % holder.tvAuteur.setText(biblio.get(position).getAuteur()); % return%convertView; % }

26/05/13 17:29

Voil notre fonction termine ! Retournons dans notre activit principale et modifions notre code pour que la liste prenne en paramtres notre LivreAdapter comme ceci : 1 LivreAdapter%adapter%=%new%LivreAdapter(this,%maBibliotheque); 2 % 3 lvListe.setAdapter(adapter); Lancez lapplication et voyez par vous mme !

Ecran final Si vos donnes changent, penser utiliser la fonction adapter.notifyDataSetChanged(); qui aura pour effet de notifier le changement de donnes et de recharger la liste automatiquement. Jespre que ce tutoriel vous aura plus et je vous dis la prochaine Voici les sources : FormationListeAdapter
0
Jaime 3 personnes aiment a.

Mots-clefs :adapter, android, java, tutoriel

Vous avez aim cet article ? Partagez le!

Articles relatifs
[Tutoriel Android] Partie 19 Accder aux webservice via Android SAUTOFORMER AU DVELOPPEMENT MOBILE [Tutoriel Android] Partie 18 Contrles personnaliss

[Tutoriel Android] Partie 17 StrictMode

A propos de l'auteur: Pierre-Emmanuel Mercier

58 commentaires Laisser un commentaire...


Meilleurs Communaut

Partager

oromis

il y a 7 mois

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 5 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Bonjour, J'ai suivi ce tuto qui est trs bien fait est vraiment trs utile mais j'ai un problme bizarre que je n'arrive pas rsoudre. En effet entre chaque item de ma liste il y a un espace de la taille de l'cran du tlphone. Et donc pour accder l'item suivant il faut scroller tout l'cran. J'ai pourtant bien mis la hauteur du layout des items en wrap_content mais j'ai beau changer cette hauteur mme avec une valeur fixe cela ne change rien. Avez vous une ide de ce qui pourrait causer cela?
3 duguet

Rpondre
il y a 7 mois

Partager

Dsol je viens de trouver. Mga grosse erreur de dbutant (double dclaration). A vouloir tester plusieurs solutions on semmele !!!
Rpondre duguet

Partager

il y a 7 mois

Bonjour, merci pour ce tuto gnial. Je vous contacte car je bloque btement sur une listview. En fait j'ai une activit qui gre un bouton, un textview et une listview (la fameuse). Quand je clique sur le bouton a ouvre une autre activit en attendant un rsultat (StartActivityForResult). Dans la fonction qui analyse les rsultats je rcupre un string (via l'intent) et je souhaite ajouter ce string la fin de ma listview. Ce que j'ai compris des listview : la listview est associe un adapter via la fonction setAdapter ; l'adapter est li une liste. Vu que je souhaite juste ajouter un string j'utilise un ArrayAdapter (pas de custom). Suite la rcupration du string via l'intent j'ai essay 2 mthodes : mettre jour la liste puis appeler la mthode notifyDataSetChanged de l'adapter OU appeler directement la mthode add de l'adapter => mme rsultat l'mulateur me dit Unfortunately, appli has stopped... Je ne m'en sors pas public class MainActivity extends Activity {
Afficher plus

Rpondre Romain RINIE

Partager

il y a 8 mois

Bonsoir, Merci beaucoup pour ce trs bon tuto! J'aimerais aller un peu plus loin et j'aimerai ouvrir une nouvel activit lors d'un clic sur un lments. Malheureusement je n'arrive pas rcuprer le titre ou l'auteur dans la fonction onItemClick(), auriez-vous une piste?
Rpondre Philippe Chretien

Partager
il y a 10 mois

Merci beaucoup pour cet excellent tuorial ... Je l'ai appliqu la lettre (ou presque) et a fonctionne trs bien!
Rpondre Mick

Partager

il y a 10 mois

Salut et merci pour ce tuto! Nanmoins, je bloque au niveau de cette ligne convertView = inflater.inflate(R.layout.itemlivre, null); mon Eclipse m'annonce une erreur au niveau de itemlivre : "itemlivre can't be resolve or is not a field" Je suis un peu perdu mais merci pour tout!
Rpondre Acesyde
Modo

Partager
Mick il y a 10 mois

Vrifie que le R n'est pas le R de android.R et bien le R de ton projet.


http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/ Page 6 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Vrifie que le R n'est pas le R de android.R et bien le R de ton projet. (Problme avec les imports)
1 Rpondre Mick Partager

Acesyde il y a 10 mois

Salut, merci pour ta rponse, a devait tre a car il me mettait en import android.R avec le triangle jaune. Ma classe tant dans un autre package, il galrait pour trouver et du coup, j'ai "feint" en crant une classe DevTools qui fait un get sur le R de mon projet et j'arrive rcuprer les infos, mais c'est un peu contraignant et pas trs joli. Du coup, avec ton coup de main, a passe ! Merci beaucoup. Maintenant, je suis embt car je veux faire appel un web service distant (sur serveur TOMCAT - une appli dveloppe en GWT), mais je patauge un peu pour l'url de connexion. Mais bon, j'ai la foi ! \o/ Merci beaucoup en tout cas.
Rpondre niten

Partager

il y a 11 mois

Merci beaucoup un trs bon tuto que malheureusement j'ai mis pas mal de temps trouver. J'ai commenc Android hier matin (installation sdk, eclypse etc...), et aprs 24h a chercher de la doc, je peux dire que c'est le meilleur tuto que j'ai vu jusqu'ici. Encore merci. Du coup, je vais pouvoir finir mon appui, livrer mon client, et ne plus jamais rien accepter pour les tlphones qui ne lise pas les swf ^^.
Rpondre debutanteandroid

Partager
il y a un an

bjr..j'ai essayer d'adapter le tuto mon application..j'ai pas arriver afficher la liste :(..cette dernire est crer avec des donnes transfrer d'une autre activit: voila un bout de code: public class CommandeAct extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try{ setContentView(R.layout.listartcmd); } catch(Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show(); }Bundle extra = getIntent().getExtras(); String variable = extra.getString("Article"); String vari = extra.getString("prixval"); //cration d'une ligne de commande Ligne_Cmd ArtCmd = new Ligne_Cmd(1,variable,vari,1);//cration d'un element de liste sous forme Ligne_Cmd List<ligne_cmd> listcmd =new ArrayList<ligne_cmd>(); Afficher plus
Rpondre Eiji

Partager

il y a un an

Salut! Super tuto, c'est exactement ce que je cherchais, mais je rencontre un petit problme au niveau de maListe.setAdapter(adapter);Ca plante et j'ignore pourquoi... Ma bibliothque est pourtant bien remplie, je ne trouve pas. Aurais tu une piste?
Rpondre Acesyde
Modo

Partager
Eiji il y a un an

Regarde dans le logcat, surement une mauvaise instanciation d'objet.


Rpondre gallien

Partager

il y a un an

Merci pour ces prcisions !


Rpondre Partager

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 7 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art


Rpondre gallien

26/05/13 17:29

Partager

il y a un an

Salut, je viens de raliser ton tutoriel. Le rsultat final marche trs bien sur ma tablette. Cependant, je pense pas que j'ai tout compris dans la conception... par exemple je ne comprend pas dans la classe LivreAdapter: on code la mthode getView, qui est ensuite appele nulle part. Comment cela fonctionne t'il ? o est ralis l'appel vers cette mthode ? cordialement,
Rpondre Acesyde
Modo

Partager
gallien il y a un an

C'est la listview qui appel son Adapter et cet adapteur contient forcement getView (d'ou l'hritage) La Listview doit possder un adapter drivant du type BaseAdapter Nous on hrite de BaseAdapter, donc c'est impeccable :)
1 Lionel M

Rpondre
il y a un an

Partager

Slt merci pour le tuto, je l'ai utilis pour l'adapter a mes besoin, et j'ai pu rsoudre mon soucis pour mettre se couleur dans ma listview. Mais un autre problme es survenu. c'est problme c'est java.lang.StackOverflowError. elle ce produit quand je slectionne un item, et je ne vois pas comment le rsoudre. 06-05 20:41:45.777: E/AndroidRuntime(484): FATAL EXCEPTION: main 06-05 20:41:45.777: E/AndroidRuntime(484): java.lang.StackOverflowError 06-05 20:41:45.777: E/AndroidRuntime(484): at android.util.Log.println(Log.java:289) 06-05 20:41:45.777: E/AndroidRuntime(484): at com.android.internal.os.AndroidPrintStream.log(AndroidPrintStream.java:47) 06-05 20:41:45.777: E/AndroidRuntime(484): at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:311) 06-05 20:41:45.777: E/AndroidRuntime(484): at ml.lionel.legta.ServeurAdapter.getItemId(ServeurAdapter.java:148) 06-05 20:41:45.777: E/AndroidRuntime(484): at ml.lionel.legta.ServeurAdapter.getItemId(ServeurAdapter.java:149) 06-05 20:41:45.777: E/AndroidRuntime(484): at
Afficher plus

Rpondre Acesyde
Modo

Partager
Lionel M il y a un an

Quand tu as un stackoverflow c'est qui tu as dpass la taille de t'as liste la slection. Tu dois surement slectionner un item qui est hors des bornes de ta liste.
Rpondre Nicolas Sornin

Partager

il y a un an

Tout bon tuto ! Je dev sous API 8 et je n'ai pas accs aux fragments. Je pensais tre donc oblig de me restreindre une ListActivity mais votre tuto et les ListView me sauvent ;-) Ce qui fait le petit plus, c'est le renseignement sur l'actualisation de la vue, utile quand on rcupre la liste depuis un WebService ! Un tout grand merci et une bonne continuation !
Rpondre Geo

Partager

il y a un an

Gnial, ces tuto, je dois en tre mon 4ieme. Super. Merci. Pour celui ci, j'ai eu un petit souci, rsolu, mais qui peut tre interessant : a plantait au dmarrage sur la ligne "setContentView(R.layout.main); " Et puis j'ai mis RemplirLaBibliotheque(); avant cette ligne et non pas aprs, et a marche. Mais du coup je me demande quand il faut appeler setContentView() en
http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/ Page 8 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Mais du coup je me demande quand il faut appeler setContentView() en gnral dans le oncreate. Pas tout fait au dbut apparemment ?
Rpondre Guest

Partager

il y a un an

Bonjour, Lorsque j'applique l'adapter a ma listView, rien ne se passe et je catch un nullpointerExeption ? Aurais-tu une piste stp ? Merci !
Rpondre Acesyde
Modo

Partager
Guest il y a un an

Bonjour, Tu catch un NullPointer quel niveau et sur quelle variable ?


Rpondre Guest Partager

Acesyde il y a un an

J'ai rsolu tout seul, il fallait mettre " setContentView(R.layout.main);" au tout dbut :) Dsol du drangement !
Rpondre Acesyde 1 Dacaramel
Modo

Partager
Guest il y a un an

Super si tu as trouv ;)
Rpondre Partager

il y a un an

Tres bon tuto! merci! j'ai essay vos codes en ajoutant les icones avec listview mais en vain (je suis encore noob!!). Avez-vous un example avec listview +icon. Si vous pouvez me donner quelques pistes sur ce que j'ai fait. Ca serait super cool. dans :public class Livre{} j'ai aujout: public class Livre{ private ImageViw image; . ....... public Livre( ImageView image,String titre, String auteur) { this.image = image; this.titre = titre; this.auteur = auteur; } public String getImage() { return image; } Afficher plus
Rpondre Acesyde
Modo

Partager
Dacaramel il y a un an

Tu as dj tout ce qu'il te faut je vois. en faites c'est pas maBibliotheque.add qui prend 3 args mais la classe Livre d'ou le new Livre(arg1,arg2,arg3) je vois qu'en plus tu as dj implment les 3 arguments dans le constructeur de la classe Livre. En suite pour l'image tout est correctement fait dans ton code il reste juste rajouter un imageview dans ton template xml de ton item. Ensuite le tour est jou. J'espre avoir t assez clair sinon fait moi signe :)
Rpondre Thomy

Partager

il y a un an

As tu une ide si l'on peut avoir une ArrayList dans ta classe Livre (pour grer des commentaires sur un livre, plusieurs auteurs...) ?
Rpondre Acesyde
Modo

Partager
Thomy il y a un an

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 9 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Bien entendue, on peut faire ce que l'on veut ;) Aprs c'est plus un problme de modlisation du concept qu'on problme de dveloppement.
Rpondre Thomy Partager

Acesyde il y a un an

OK, parce que je suis en train d'essay cela justement et je ne sais pas si je procde de la bonne faon.En fait, dans l'itemLivre.xml, j'ai nouveau une ListView qui correspond un champ ArrayList de ma classe Livre. Je procde de la mme faon pour cette nouvelle ListView avec un adapter que j'appelle cette fois ci dans LivreAdapter pour pouvoir afficher ces donnes dans mon appli mais j'ai qu'un seul item qui apparat. Donc je me demandais si je procdais de la bonne faon
Rpondre Acesyde
Modo

Partager
Thomy il y a un an

Le mieux serait d'avoir une activit affichant la liste des livres, quand tu clic sur le livre tu ouvres une nouvelle activits avec la liste des commentaires. C'est simple maintenir et la navigation est fluide. Imaginons le cas ou tu charges les commentaires lorsque tu clics sur le livre et non au dmarrage de l'application, sinon a prend trop de mmoire. Tu as toutes les cartes en mains dsormais
Rpondre Sickly

Partager

il y a un an

Merci pour ce tuto. Par contre il y a un problme ds lors que l'on a des entier pour cette ligne: holder.tvAuteur.setText(biblio.get(position).getAuteur()); Sinon sa fonctionne niquel :)
Rpondre Partager
Sickly il y a un an

Pierre-Emmanuel Mercier

Bonjour Sickly, Regarde dans ton logcat l'erreur qui est leve elle t'informera rapidement du problme ;)
Rpondre shibakaneki

Partager

il y a un an

Concernant le problme du R.java qui n'est plus gnr. Est-ce que par hasard tu n'aurais pas supprim le rpertoire 'gen' ? C'tait mon cas et j'avais le mme problme. En le recrant manuellement et en faisant un Refresh + rebuild du projet le fichier R.java a t regnr. Pas beosin d'ajouter l'import explicitement.
Rpondre Akiat

Partager

il y a 2 ans

Merci pour ta rponse, cependant, la seule chose qui a fonctionn t de recrer un nouveau projet... Bizarre...
Rpondre Maxime

Partager

il y a 2 ans

Encore un bon tuto qui me permet d'avancer progressivement vers mes objectifs. Juste un petit dtail : Le premier code, correspondant au layout principal, Pour la ListView, vous avez mis : android:layout_height="fill_parentA" Le A me semble de trop, non ?
Rpondre Partager

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 10 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art


Rpondre Partager
Maxime il y a 2 ans

26/05/13 17:29

Pierre-Emmanuel Mercier

Bonjour Maxime, Effectivement une petite coquille c'est glisse dans l'article ;)
Rpondre Akiat

Partager

il y a 2 ans

Le problme viens en fait du fait que Eclipse ne veut pas me gnrer de R.java... Malgr les Clean, build, ajout de layouts, modification d'un xml... La y'a vraiment un truc qui m'chappe...
Rpondre Partager
Akiat il y a 2 ans

Pierre-Emmanuel Mercier

le R.java ce trouve dans les imports en haut de ta page, supprime l'import contenant R. normalement il va t'offrir de nouveau la bonne possibilit
Rpondre Akiat

Partager

il y a 2 ans

Re bonjour tous. Me voila encore confront un problme, que je n'arrive pas rgler... En fait il s'agit du Ressource Manager "R". R cannot be resolved to a variable. Le fait est que si je met un "import android.R;" ce n'est plus le R qui n'est pas reconnu, mais le "main" de R.id.main (pareil pour lvListe). ce qui est normal car il cherche dans le Ressource Manager du package android... Mais l'auto-complete sur un "import com.MyListView" me le complete directement par "import com.MyListView.*;" . Et si j'essai juste d'importer import com.MyListView.R; il ne le trouve pas... Je ne comprends vraiment pas. Jespre que quelqu'un pourra m'aider... Merci par avance.
Rpondre Imene Sbiaat

Partager

il y a 2 ans

I like it
Rpondre Tomny

Partager

il y a 2 ans

Bonjour, j'ai bien appliquer ce tuto qui fonctionne trs bien. J'ai voulu l'tendre en utilisant la mise jour des donnes et cela fonctionne un peu dtail prs, ma liste se rpte chaque modification (elle se retrouve en dessous de la version prcdente). Je ne comprends pas trop pourquoi. :dizzy: Pour info j'ai passer mon adapter en singleton car je dois le modifier depuis plusieurs autres classes ou activity de mon application. Merci encore.
Rpondre cadavor

Partager

il y a 2 ans

En continuant le debug je me suis rendu que lajout dune progressBar et donc dun thread entrainait ce problme de retard!!! En le supprimant le problme nest plus prsent mais la progressBar non plus -_Comment avoir les 2?
Rpondre Partager
cadavor il y a 2 ans

Pierre-Emmanuel Mercier

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 11 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

Un thread traitant les donnes, une progressbar dans un progress dialog pour eviter que l'utilisateur bricole pendant ce temps et voil .
Rpondre cadavor

Partager

il y a 2 ans

En continuant le debug je me suis rendu que l'ajout d'une progressBar et donc d'un thread entrain ce problme de retard!!! En le supprimant le problme n'est plus prsent mais la progressBar non plus... -_Comment avoir les 2?
Rpondre cadavor

Partager

il y a 2 ans

Bonjour, J'ai un gros soucis avec une listview que j'ai implement partir de ce tuto (trs bien fait et trs instructif merci!!!). En Run, la liste n'est pas rempli la cration (aucun getView d'appel). Si je la rafraichit manuellement, j'obtiens un beau crash!!! 01-24 22:48:54.856: INFO/System.out(221): getView 0 of 14 01-24 22:48:55.056: INFO/System.out(221): getView 1 of 14 01-24 22:48:55.316: INFO/System.out(221): getView 2 of 14 01-24 22:48:55.426: INFO/System.out(221): getView 3 of 14 01-24 22:48:55.526: INFO/System.out(221): getView 4 of 14 01-24 22:48:55.626: INFO/System.out(221): getView 5 of 14 01-24 22:48:55.716: INFO/System.out(221): getView 6 of 14 01-24 22:48:55.826: INFO/System.out(221): getView 7 of 14 01-24 22:48:55.926: INFO/System.out(221): getView 8 of 14 01-24 22:48:56.026: INFO/System.out(221): getView 9 of 14 01-24 22:48:56.126: INFO/System.out(221): getView 10 of 0 01-24 22:48:56.296: ERROR/AndroidRuntime(221): java.lang.IndexOutOfBoundsException: Invalid location 10, size is 0 Afficher plus
Rpondre Gg

Partager

il y a 2 ans

En tant que nophyte j'ai t ravi de dcouvrir que l'on pouvait associer une structure de donne libre n'importe quel View (via la mthode setTag) mais son utilisation dans ce tutoriel a un peu frein ma comprhension de l'Adapter. Or le tag n'tait pas du tout ncessaire ! Si l'on ne l'utilise pas alors la mthode getView override ne contient plus que trois lignes (plus le return) : if (convertView == null) convertView = inflater.inflate(R.layout.item_livre, null); ((TextView)convertView.findViewById(R.id.tvTitre)).setText(biblio.get(position).getTitre()); ((TextView)convertView.findViewById(R.id.tvAuteur)).setText(biblio.get(position).getAuteur()); Ca me semble plus lisible ainsi... Merci pour cet excellent tutoriel ! (un de plus)
Rpondre Cyril Mottier

Partager

il y a 2 ans

Tutorial intressant mais composs de quelques petits problmes ... - Le layout comprend une dans un ... le est en fait inutile puisqu'il ne contient qu'un seul et unique lment - L'lment dispose de l'attribut android:layout_height="wrap_content" ... c'est bien sr possible mais fortement dconseill car cela implique que la ListView doit mesurer l'ensemble des lments avant de pouvoir s'afficher. Dans le cas d'une ListView a 3 lment a va mais si on a 10000 lments, a devient plus que problmatique. Il est donc conseill de mettre android:layout_height="fill_parent". - Android s'crit "Android" et pas "Androd" :p - Pour amliorer tout a .. autant utiliser une ListActivity ;) Encore bravo pour ces tutos.
Rpondre Partager
Cyril Mottier il y a 2 ans

Pierre-Emmanuel Mercier

Salut Cyril, Merci pour le coup du wrap_content je ne savais pas dans le cas du listview, merci de le prciser :)
http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/ Page 12 sur 13

[Tutoriel Android] Partie 6 - Les ListView - Ace Art Ace Art

26/05/13 17:29

listview, merci de le prciser :) Pour le reste je vais corriger a, et bravo toi aussi pour tes tutoriaux et ton p'tit Greendroid
Rpondre Sofienne

Partager

il y a 3 ans

Merci, merci, merci , merci , merci !!! J'ai dit merci ? ;)


Rpondre Partager
Sofienne il y a 3 ans

Pierre-Emmanuel Mercier

En effet vous l'avez dit ;)


Rpondre kikizz

Partager

il y a 3 ans

SUPER TUTO, tu aurais pus t'arrter sur un simple remplissage de Listeview mais tu as t plus loin, j'ai pu rsoudre ma problmatique simplement, donc un grand merci. Je m'en vais lire tous les autres tutos. :smile: :biggrin:
Rpondre Partager

Afficher plus de commentaires

Ace-art.fr

Drupal Web Hosting

http://www.ace-art.fr/wordpress/2010/07/21/tutoriel-android-partie-6-les-listview/

Page 13 sur 13