Guilo Posté(e) 1 mars 2011 Share Posté(e) 1 mars 2011 Bonjour, J'ai suivi le 1er exercice Notepad du tutorial officiel Android. J'ai décidé de l'agrémenter un peu car c'est en essayant qu'on apprend. Je veux donc avoir deux lignes dans ma ListView, une en gros et une écrite plus petit. J'ai donc modifié mon fichier notepad_rows.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/text1" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:textSize="20sp" android:layout_height="60sp"/> <TextView android:id="@+id/text2" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:textSize="12sp" android:layout_height="wrap_content"/> </LinearLayout> Ma ListView est alimentée par un SimpleCursorAdapter, comme dans le tutorial. Maintenant je veux ajouter à la deuxieme ligne de chaque element du texte arbitraire. J'essaye donc d'accéder aux elements avec getChildAt() mais rien n'est jamais retourné et getChildCount retourne 0. Je me dis (corrigez moi si je me trompe) : OK c'est normal, c'est parce que la liste est gérée par le SimpleCursorAdapter. J'essaye donc d'utiliser la méthode bindView() de SimpleCursorAdapter mais je n'arrive à rien. Donc pour résumer : - Quelle méthode simple y a t-il pour ajouter manuellement des éléments à une liste, est-ce possible sans un quelconque adaptateur ? - Comment accéder à mon TextView qui se nomme text2 pour y faire un setText ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 2 mars 2011 Share Posté(e) 2 mars 2011 Si la donnée à afficher dans le second TextView provient du Cursor de la même façon que pour le premier TextView, c'est très simple, ça se paramètre au niveau du constructeur de SimpleCursorAdapter SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R.layout.notepad_rows, cursor, new String[]{"nom_colonne1", "nom_colonne2"}, new int[]{R.id.text1, R.id.text2}); Sinon, il faudra plutôt passer par le bindView. Et tu as bien compris: la liste est représentée par l'Adapter (c'est lui qui contient les données), pas par la ListView, qui, elle, n'est qu'une représentation graphique (partielle) de cette liste Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guilo Posté(e) 2 mars 2011 Auteur Share Posté(e) 2 mars 2011 Merci. Effectivement, les donnés pour la seconde ligne ne proviennent pas du cursor. Je vais donc me pencher sur bindView. ÉDIT : j'ai avancé un peu. J'ai crée une classe héritée de SimpleCursorAdapter et redéfini la méthode getView. Ça marche, la première ligne affiche des données en provenance du curseur et la deuxième affiche bien ce que je veux. Le problème est que quand j'ajoute une note, ça crash. De plus il y a un problème de données. Certaines lignes sont répétées, d'autres n'apparaissent pas du tout. Et cela change quand les lignes sortent de la vue et y reviennent quand je scroll Message envoyé avec l'application Forum Frandroid Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guilo Posté(e) 2 mars 2011 Auteur Share Posté(e) 2 mars 2011 Aye, ça marche. Je mets le code dès que j'ai internet Message envoyé avec l'application Forum Frandroid Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.