Aller au contenu

Petite question sur les ListView


Olivier

Recommended Posts

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

Lien vers le commentaire
Partager sur d’autres sites

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é.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

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...).

Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

+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 !

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...