(Tutoriel Android) Partie 6 - Les ListView - Ace Art Ace Art [PDF]

  • Author / Uploaded
  • Nene
  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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

ARTICLES

26/05/13 17:29

PROGRAMMATION

Curriculum Vitae

DEVELOPPEMENT ANDROID / C# / JAVA

juil

21 2010

Rechercher

ANDROID // PROGRAMMATION

[Tutoriel Android] Partie 6 – Les ListView Un article de Pierre-Emmanuel Mercier

57 Commentaires Suivez moi sur twitter !

Android et les listes

SURVIE

Bonjour à tous et bienvenue dans ce nouveau tutoriel qui aura pour sujet les ListView, sujet très fâcheux pour les novices du monde d’Android. Tout d’abord, je vais vous expliquer le cheminement des données pour les ListView. Comme son nom l’indique, une ListView est une liste de vue comprenant des items ; pour afficher une liste d’item dans celle-ci, il lui faut un adaptateur de données. Comme chaque donnée est différente selon l’application, vous devez faire un adaptateur personnalisé pour entreposer celle-ci et l’afficher.

Vacances Séjour Voyage pas Cher sur Promovacances : Agence de Voyage, Promotions www.promovacances.com

Je vais vous montrer un exemple basique d’une ListView avec un adaptateur nommé ArrayAdapter fourni avec Android. Tout d’abord, on crée 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

%

%

%

%

Puis dans notre activité principale, nous allons récupérer notre ListView et lui affecter un adaptateur grâce à la méthode setAdapter. Ajoutons-y un objet de type ArrayAdapter, contenant une liste de String (pas les sous-vêtements !) avec un layout générique d’item que fournit la plateforme par défaut et enfin la liste des données. 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(this, android.R.layout.simple_list_item_1,listeStrings)); % } % }

CATÉGORIES Andengine (5) Android (21) Application (1) Articles (2) Non classé (2) Programmation (31)

LIENS Developpez Forum XNA FrAndroid Le Studio – création site internet bordeaux Site du zero SLouge Smartphone France

NUAGE 2D 9patch actions bars adapter

android

andengine api C++ camera Csharp ddms debogage Echec exception flux gringerbeard honeycomb image

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(le contexte,le style des items,les données);

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

26/05/13 17:29

Rien de plus simple, lancez l’application et voyez pas vous-même. Mais le problème se corse un petit peu si l’on désire ajouter nos propres données, ce qui sera a 99.9% le cas Imaginons que nous allons faire une bibliothèque avec des livres, je ne vais pas vous refaire un cour de JAVA sur les objets, donc on va directement créer ce qui nous faut pour cette bibliothèque.

COMMENTAIRES RÉCENTS Light_Z3R0 dans Tutoriel sur la sérialisation en C# – Partie 1

La bibliothèque sera définie comme une liste de type List.

Dim69 dans [Tutoriel Android] Partie 16 – Base de données

Puis, nous allons créer un objet de type livre comprenant un titre et un auteur. Par la suite, vous pouvez étendre les possibilités avec un ISBN, etc… et afficher les informations lorsque l’on clique

azizachom dans [Tutoriel Android] Partie 14 – Wifi

dessus (tiens ça me rappel un tutoriel où j’ai déjà écrit ça

Anael Lefebvre dans [Tutoriel Android] Partie 16 – Base de données

).

Voici la composition du type Livre : 01 02 03 04 05 06 07 08

public%class%Livre%{ % private%String%titre; % private%String%auteur; % public%Livre(String%titre,%String%auteur)%{ %

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

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; % } % }

Anael Lefebvre dans [Tutoriel Android] Partie 16 – Base de données

ARCHIVES octobre 2012 (1) juin 2012 (1) janvier 2012 (2) novembre 2011 (1) octobre 2011 (3) juillet 2011 (3) juin 2011 (1) décembre 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 l’objet classique. Puis dans notre activité, on crée notre bibliothèque. 1 List%maBibliotheque%=%new%ArrayList(); Puis, créons 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%développement%Android",%"Mark Murphy")); % maBibliotheque.add(new%Livre("Le%seuil%des%ténèbres",%"Karen%Chance")); % }

J’ai ajouté trois livres aléatoires trouvés sur Amazon, mais vous pouvez en prendre d’autres, je ne serais pas vexé pour autant Maintenant, nous allons créer notre propre Adaptateur pour gérer ces données. On va commencer par créer 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

Création 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

%

%

%

%

C’est simple mais efficace ! Nous voilà avec un gabarit correct pour travailler, maintenant on va se pencher sur notre adaptateur personnalisé. Créez une classe nommée LivreAdapter, héritant de la classe BaseAdapter.

Création de classe LivreAdapter Voilà, notre classe est générée et on va pouvoir la modifier comme nous le voulons. Le générateur de classes à rajouter directement les méthodes à remplir pour le bon fonctionnement de l’adaptateur, comme ça nous n’aurons pas de temps à perdre (merci Eclipse). On retrouvera ces méthodes : getCount() qui retournera le nombre d’éléments dans notre liste. getItem() qui retournera notre objet livre à la position indiquée. getItemId() qui retournera l’id du livre. getView() qui retournera la vue de l’item pour l’affichage.

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

26/05/13 17:29

Rajoutons un type List bibilo, dans notre classe et créons un constructeur par défaut prenant une liste et un contexte en paramètres. Rajoutons aussi à notre classe un LayoutInflater, qui aura pour mission de charger notre fichier XML pour l’item, c’est là que l’on utilisatera le contexte. 01 02 03 04 05 06 07 08 09 10 11

List%biblio; % LayoutInflater%inflater; % public%LivreAdapter(Context%context,List%biblio)%{ % inflater%=%LayoutInflater.from(context); % this.biblio%=%biblio; % }

Vous suivez toujours ? Oui alors on continue ! Remplissons nos différentes méthodes, tout d’abord getCount qui retournera la taille de la bibliothèque. 1 @Override 2 % 3 4 5 6 7

public%int%getCount()%{ % return%biblio.size(); % }

Ensuite, la méthode getItem qui retournera l’item. 1 2 3 4 5 6 7

@Override % public%Object%getItem(int%position)%{ % return%biblio.get(position); % }

Et la troisième, qui sera getItemId qui retournera la position de l’item. 1 2 3 4 5 6 7

@Override % public%long%getItemId(int%position)%{ % return%position; % }

Maintenant la dernière, qui est la plus difficile au début mais vraiment au début ^^ Créons une classe juste avant cette méthode (oui on peut le faire en JAVA une classe dans une classe !) qui sera nommée ViewHolder. Elle nous servira à mémoriser les éléments de la liste en mémoire pour qu’à chaque rafraichissement l’écran ne scintille pas (c’est un genre de buffer comme en graphisme). 1 2 3 4 5 6 7

private%class%ViewHolder%{ % TextView%tvTitre; % TextView%tvAuteur; % }

Dans la méthode, nous allons utiliser un ViewHolder, puis nous allons vérifier que la view présente n’est pas null sinon nous allons la créer, et ensuite charger l’XML en mémoire pour l’attribuer à notre objet. Et enfin tagguer notre objet pour pouvoir le récupérer à la prochaine mise à jour graphique. Et pour finir, on y attribue les données 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

26/05/13 17:29

% holder.tvAuteur.setText(biblio.get(position).getAuteur()); % return%convertView; % }

Voilà notre fonction terminée ! Retournons dans notre activité principale et modifions notre code pour que la liste prenne en paramètres notre LivreAdapter comme ceci : 1 LivreAdapter%adapter%=%new%LivreAdapter(this,%maBibliotheque); 2 % 3 lvListe.setAdapter(adapter); Lancez l’application et voyez par vous même !

Ecran final Si vos données changent, penser à utiliser la fonction adapter.notifyDataSetChanged(); qui aura pour effet de notifier le changement de données et de recharger la liste automatiquement. J’espère que ce tutoriel vous aura plus et je vous dis à la prochaine Voici les sources : FormationListeAdapter 0 J’aime

3 personnes aiment ça.

Mots-clefs :adapter, android, java, tutoriel

Vous avez aimé cet article ? Partagez le!

Articles relatifs [Tutoriel Android] Partie 19 – Accéder aux webservice via Android

S’AUTOFORMER AU DÉVELOPPEMENT MOBILE [Tutoriel Android] Partie 18 – Contrôles personnalisés

[Tutoriel Android] Partie 17 – StrictMode

A propos de l'auteur: Pierre-Emmanuel Mercier

58 commentaires

0

Laisser un commentaire... Meilleurs

Communauté

oromis



Partager

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 très bien fait est vraiment très utile mais j'ai un problème bizarre que je n'arrive pas à résoudre. En effet entre chaque item de ma liste il y a un espace de la taille de l'écran du téléphone. Et donc pour accéder à 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 même avec une valeur fixe cela ne change rien. Avez vous une idée de ce qui pourrait causer cela? 3

Répondre

duguet



Partager ›

il y a 7 mois

Désolé je viens de trouver. Méga grosse erreur de débutant (double déclaration). A vouloir tester plusieurs solutions on s’emmele !!! Répondre duguet



Partager ›

il y a 7 mois

Bonjour, merci pour ce tuto génial. Je vous contacte car je bloque bêtement sur une listview. En fait j'ai une activité qui gère un bouton, un textview et une listview (la fameuse). Quand je clique sur le bouton ça ouvre une autre activité en attendant un résultat (StartActivityForResult). Dans la fonction qui analyse les résultats je récupère 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 associée à 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 récupération du string via l'intent j'ai essayé 2 méthodes : mettre à jour la liste puis appeler la méthode notifyDataSetChanged de l'adapter OU appeler directement la méthode add de l'adapter => même résultat l'émulateur me dit Unfortunately, appli has stopped... Je ne m'en sors pas public class MainActivity extends Activity { Afficher plus

Répondre Romain RINIE



Partager ›

il y a 8 mois

Bonsoir, Merci beaucoup pour ce très bon tuto! J'aimerais aller un peu plus loin et j'aimerai ouvrir une nouvel activité lors d'un clic sur un éléments. Malheureusement je n'arrive pas à récupérer le titre ou l'auteur dans la fonction onItemClick(), auriez-vous une piste? Répondre 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 très bien! Répondre Mick



Partager ›

il y a 10 mois

Salut et merci pour ce tuto! Néanmoins, 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! Répondre Acesyde

Modo

Partager › Mick • il y a 10 mois

Vérifie 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

Vérifie que le R n'est pas le R de android.R et bien le R de ton projet. (Problème avec les imports) 1

Répondre Mick

Partager ›

Acesyde • il y a 10 mois

Salut, merci pour ta réponse, ça devait être ça car il me mettait en import android.R avec le triangle jaune. Ma classe étant dans un autre package, il galérait pour trouver et du coup, j'ai "feinté" en créant une classe DevTools qui fait un get sur le R de mon projet et j'arrive à récupérer les infos, mais c'est un peu contraignant et pas très joli. Du coup, avec ton coup de main, ça passe ! Merci beaucoup. Maintenant, je suis embêté car je veux faire appel à un web service distant (sur serveur TOMCAT - une appli développée en GWT), mais je patauge un peu pour l'url de connexion. Mais bon, j'ai la foi ! \o/ Merci beaucoup en tout cas. Répondre niten



Partager ›

il y a 11 mois

Merci beaucoup un très bon tuto que malheureusement j'ai mis pas mal de temps à trouver. J'ai commencé Android hier matin (installation sdk, eclypse etc...), et après 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 téléphones qui ne lise pas les swf ^^. Répondre 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 dernière est créer avec des données transférer 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"); //création d'une ligne de commande Ligne_Cmd ArtCmd = new Ligne_Cmd(1,variable,vari,1);//création d'un element de liste sous forme Ligne_Cmd List listcmd =new ArrayList(); Afficher plus Répondre Eiji



Partager ›

il y a un an

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

Modo

Partager › Eiji • il y a un an

Regarde dans le logcat, surement une mauvaise instanciation d'objet. Répondre gallien



Partager ›

il y a un an

Merci pour ces précisions ! Répondre

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 Répondre gallien



26/05/13 17:29

Partager ›

il y a un an

Salut, je viens de réaliser ton tutoriel. Le résultat final marche très 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 méthode getView, qui est ensuite appelée nulle part. Comment cela fonctionne t'il ? où est réalisé l'appel vers cette méthode ? cordialement, Répondre Acesyde

Partager ›

Modo

gallien • il y a un an

C'est la listview qui appel son Adapter et cet adapteur contient forcement getView (d'ou l'héritage) La Listview doit posséder un adapter dérivant du type BaseAdapter Nous on hérite de BaseAdapter, donc c'est impeccable :) 1 Lionel M

Répondre •

Partager ›

il y a un an

Slt merci pour le tuto, je l'ai utilisé pour l'adapter a mes besoin, et j'ai pu résoudre mon soucis pour mettre se couleur dans ma listview. Mais un autre problème es survenu. c'est problème c'est java.lang.StackOverflowError. elle ce produit quand je sélectionne un item, et je ne vois pas comment le résoudre. 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

Répondre Acesyde

Modo

Partager › Lionel M • il y a un an

Quand tu as un stackoverflow c'est qui tu as dépassé la taille de t'as liste à la sélection. Tu dois surement sélectionner un item qui est hors des bornes de ta liste. Répondre Nicolas Sornin



Partager ›

il y a un an

Tout bon tuto ! Je dev sous API 8 et je n'ai pas accès 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 récupère la liste depuis un WebService ! Un tout grand merci et une bonne continuation ! Répondre Geo



Partager ›

il y a un an

Génial, ces tuto, je dois en être à mon 4ieme. Super. Merci. Pour celui ci, j'ai eu un petit souci, résolu, mais qui peut être interessant : ça plantait au démarrage sur la ligne "setContentView(R.layout.main); " Et puis j'ai mis RemplirLaBibliotheque(); avant cette ligne et non pas après, 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 général dans le oncreate. Pas tout à fait au début apparemment ? Répondre 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 ! Répondre Acesyde

Partager › Guest • il y a un an

Modo

Bonjour, Tu catch un NullPointer à quel niveau et sur quelle variable ? Répondre Guest

Partager ›

Acesyde • il y a un an

J'ai résolu tout seul, il fallait mettre " setContentView(R.layout.main);" au tout début :) Désolé du dérangement ! Répondre Acesyde

Partager ›

Modo

Guest • il y a un an

Super si tu as trouvé ;) 1 Dacaramel



Répondre

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 Répondre Acesyde

Modo

Partager › Dacaramel • il y a un an

Tu as déjà 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 déjà implémenté 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'espère avoir été assez clair sinon fait moi signe :) Répondre Thomy



Partager ›

il y a un an

As tu une idée si l'on peut avoir une ArrayList dans ta classe Livre (pour gérer des commentaires sur un livre, plusieurs auteurs...) ? Répondre 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 ;) Après c'est plus un problème de modélisation du concept qu'on problème de développement. Répondre 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 procède de la bonne façon.En fait, dans l'itemLivre.xml, j'ai à nouveau une ListView qui correspond à un champ ArrayList de ma classe Livre. Je procède de la même façon pour cette nouvelle ListView avec un adapter que j'appelle cette fois ci dans LivreAdapter pour pouvoir afficher ces données dans mon appli mais j'ai qu'un seul item qui apparaît. Donc je me demandais si je procédais de la bonne façon Répondre Acesyde

Partager ›

Modo

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 activités 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 démarrage de l'application, sinon ça prend trop de mémoire. Tu as toutes les cartes en mains désormais Répondre Sickly

Partager ›

il y a un an



Merci pour ce tuto. Par contre il y a un problème dès lors que l'on a des entier pour cette ligne: holder.tvAuteur.setText(biblio.get(position).getAuteur()); Sinon sa fonctionne niquel :) Répondre

Partager ›

Pierre-Emmanuel Mercier

Sickly • il y a un an

Bonjour Sickly, Regarde dans ton logcat l'erreur qui est levĂŠe elle t'informera rapidement du problème ;) Répondre shibakaneki



Partager ›

il y a un an

Concernant le problème du R.java qui n'est plus généré. Est-ce que par hasard tu n'aurais pas supprimé le répertoire 'gen' ? C'était mon cas et j'avais le même problème. En le recréant manuellement et en faisant un Refresh + rebuild du projet le fichier R.java a été regénéré. Pas beosin d'ajouter l'import explicitement. Répondre Akiat



Partager ›

il y a 2 ans

Merci pour ta réponse, cependant, la seule chose qui a fonctionné à été de recréer un nouveau projet... Bizarre... Répondre Maxime



Partager ›

il y a 2 ans

Encore un bon tuto qui me permet d'avancer progressivement vers mes objectifs. Juste un petit dĂŠtail : 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 ? Répondre

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 Répondre

26/05/13 17:29

Partager ›

Pierre-Emmanuel Mercier

Maxime • il y a 2 ans

Bonjour Maxime, Effectivement une petite coquille c'est glissĂŠe dans l'article ;) Répondre Akiat

Partager ›

il y a 2 ans



Le problème viens en fait du fait que Eclipse ne veut pas me générer de R.java... MalgrĂŠ les Clean, build, ajout de layouts, modification d'un xml... La y'a vraiment un truc qui m'ĂŠchappe... Répondre

Partager ›

Pierre-Emmanuel Mercier

Akiat • il y a 2 ans

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ĂŠ Répondre Akiat

Partager ›

il y a 2 ans



Re bonjour Ă tous. Me voila encore confronté à un problème, que je n'arrive pas à régler... 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. J’espère que quelqu'un pourra m'aider... Merci par avance. Répondre Imene Sbiaat



Partager ›

il y a 2 ans

I like it Répondre Tomny



Partager ›

il y a 2 ans

Bonjour, j'ai bien appliquer ce tuto qui fonctionne très bien. J'ai voulu l'étendre en utilisant la mise à jour des données et cela fonctionne à un peu détail près, ma liste se répète à chaque modification (elle se retrouve en dessous de la version précédente). 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. Répondre 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 entrainait ce problème de retard!!! En le supprimant le problème n’est plus présent mais la progressBar non plus… -_Comment avoir les 2? Répondre

Partager ›

Pierre-Emmanuel Mercier

cadavor • il y a 2 ans

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 donnĂŠes, une progressbar dans un progress dialog pour eviter que l'utilisateur bricole pendant ce temps et voilĂ . Répondre 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 problème de retard!!! En le supprimant le problème n'est plus présent mais la progressBar non plus... -_Comment avoir les 2? Répondre cadavor



Partager ›

il y a 2 ans

Bonjour, J'ai un gros soucis avec une listview que j'ai implementé à partir de ce tuto (très bien fait et très instructif merci!!!). En Run, la liste n'est pas rempli à la création (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 Répondre Gg



Partager ›

il y a 2 ans

En tant que néophyte j'ai été ravi de découvrir que l'on pouvait associer une structure de donnée libre à n'importe quel View (via la méthode setTag) mais son utilisation dans ce tutoriel a un peu freiné ma compréhension de l'Adapter. Or le tag n'était pas du tout nécessaire ! Si l'on ne l'utilise pas alors la méthode getView overridée 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) Répondre Cyril Mottier



Partager ›

il y a 2 ans

Tutorial intéressant mais composés de quelques petits problèmes ... - Le layout comprend une dans un ... le est en fait inutile puisqu'il ne contient qu'un seul et unique ĂŠlĂŠment - L'élément dispose de l'attribut android:layout_height="wrap_content" ... c'est bien sûr possible mais fortement déconseillé car cela implique que la ListView doit mesurer l'ensemble des éléments avant de pouvoir s'afficher. Dans le cas d'une ListView a 3 élément ça va mais si on a 10000 éléments, ça devient plus que problématique. Il est donc conseillé de mettre android:layout_height="fill_parent". - Android s'écrit "Android" et pas "Androïd" :p - Pour amĂŠliorer tout ça .. autant utiliser une ListActivity ;) Encore bravo pour ces tutos. Répondre

Partager ›

Pierre-Emmanuel Mercier

Cyril Mottier • il y a 2 ans

Salut Cyril, Merci pour le coup du wrap_content je ne savais pas dans le cas du listview, merci de le prĂŠciser :) 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 prĂŠciser :) Pour le reste je vais corriger ça, et bravo Ă toi aussi pour tes tutoriaux et ton p'tit Greendroid Répondre Sofienne



Partager ›

il y a 3 ans

Merci, merci, merci , merci , merci !!! J'ai dit merci ? ;) Répondre

Partager ›

Pierre-Emmanuel Mercier

Sofienne • il y a 3 ans

En effet vous l'avez dit ;) Répondre kikizz



Partager ›

il y a 3 ans

SUPER TUTO, tu aurais pus t'arrêter sur un simple remplissage de Listeview mais tu as été plus loin, j'ai pu résoudre ma problématique simplement, donc un grand merci. Je m'en vais lire tous les autres tutos. :smile: :biggrin: Répondre

Partager ›

Afficher plus de commentaires

Ace-art.fr

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

Drupal Web Hosting

Page 13 sur 13