Olivier Posté(e) 11 septembre 2009 Share Posté(e) 11 septembre 2009 Est-il possible de donner des styles différents aux éléments d'une listview. Par exemple, que certains éléments (certaines lignes si on reprend l'exemple du sdk avec la liste de pays par exemple) de la liste soient en gras et pas d'autres ? Cordialement, Olivier Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 11 septembre 2009 Share Posté(e) 11 septembre 2009 oui il suffit de redéfinir la fonction getView de l Adapter de la liste view. Par exemple tu fais un layout avec un texte qui a l'ID toto. une image juste avant qui a l'id tata. tu as tas liste view appelée par exemple...liste. Normalement dans ton code tu as un : liste.setAdapter(XXXX); je ne sais pas à quoi ressemble ton adapter XXX mais tu peux faire par exemple: liste.setAdapter(new BaseAdapter(){ public int getCount() { ..... } public Object getItem(int arg0) { ..... } public long getItemId(int position) { ..... } public View getView(int position, View convertView, ViewGroup parent) { //LA CA NOUS INTERESSE View row = View.inflate(parent.getContext(),R.layout.XXXXX, null); TextView v = (TextView) row.findViewById(R.id.toto); ImageView img = (ImageView) row.findViewById(R.id.tata); ..... v.setText("Mon texte à la con"); img.setImageResource(R.drawable.machinchouette); v.setTextSize(28); v.setTextColor(android.graphics.Color.GREEN); return row; } }); Si c'est pas clair je veux bien faire le premier tutoriel Frandroid "Comment faire une listView personnalisée". ça marche peut être avec un ArrayAdapter aussi...pas vérifié. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Olivier Posté(e) 23 septembre 2009 Auteur Share Posté(e) 23 septembre 2009 En fait, je me suis basé sur le tutorial notepad. Mon code est donc : { // Get all of the rows from the database and create the item list mMessagesCursor = mDbHelper.fetchAllMessages(); startManagingCursor(mMessagesCursor); // Create an array to specify the fields we want to display in the list String[] from = new String[]{FreeboxMobileDbAdapter.KEY_SOURCE, FreeboxMobileDbAdapter.KEY_QUAND, FreeboxMobileDbAdapter.KEY_LENGTH}; // and an array of the fields we want to bind those fields to int[] to = new int[]{R.id.text1, R.id.text2, R.id.text3}; // Now create a simple cursor adapter and set it to display SimpleCursorAdapter messages = new SimpleCursorAdapter(this, R.layout.messages_row, mMessagesCursor, from, to); setListAdapter(messages); } C'est pour afficher des messages téléphoniques. J'aimerai différencier ceux qui ont été écoutés de ce qui ne l'ont pas été (en gras, ou couleur, ou autre...). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 23 septembre 2009 Share Posté(e) 23 septembre 2009 bein tu refais une classe qui herite de SimpleCursorAdapter, et tu surchage la fonction qu'il faut. surement le setViewValue.... http://developer.android.com/reference/android/widget/SimpleCursorAdapter.ViewBinder.html dedans tu dois "à la main" chercher le colonne dans le curseur et faire ta view comme tu veux...tu coup tu mets ton texte en gras ou avec image etc etc ... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Olivier Posté(e) 24 septembre 2009 Auteur Share Posté(e) 24 septembre 2009 Merci à vous deux, ca marche :) Par contre, nouvelle question liée : comment associer une image à chaque row ? (un bouton play/stop) Dans SimpleCursorAdapter, on ne peut passer que des TextViews dans le parametre 'to"... Merci ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 24 septembre 2009 Share Posté(e) 24 septembre 2009 je dirais : fais pas un SimpleSursorAdapter :/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 25 septembre 2009 Share Posté(e) 25 septembre 2009 +1 pour Popolbx Tu commences à créer une custom View (tu dérives de LinearLayout par exemple) où tu mets une image avec ton texte Ensuite tu crées un adapter qui dérive de BaseAdapter avec une List en surchargeant bien le getView Enfin il suffit de passer le nouvel Adapter à ta liste (this.setListAdapter(TonCustomAdapter)) en prenant soin de bien avoir remplie l'Adapter de tes items Et c'est good ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Olivier Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Merci pour vos réponses. Je pense avoir fait à peu près ce que vous m'avez conseillé, mais maintenant j'ai un autre problème lié (ca marche, mais trop) : https://www.frandroid.com/forum/viewtopic.php?id=4495 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.