IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Personnaliser une ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut Personnaliser une ListView
    Bonjour,

    J'ai chargé ma ListView apartir du fichier Strings.xml de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <string-array name="titreChapitres">
            <item> Chapitre 1 </item>
            <item>Chapitre 2</item>
            <item>Chapitre 3</item>
     </string-array>
    J'ai crée un layout pour les elements de la liste dans un fichier "sommaire_items.xml" comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"> 
     
    <TextView 
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dip"
        android:textIsSelectable="true"
        android:textSize="16sp"
        android:textStyle="bold" 
        android:gravity="center"
        android:textColor="#FF00FF"
        />
    </LinearLayout>
    J'esseye d'afficher cette liste personnalisé dans mon activité principale.

    Pour le moment, j'affiche ma liste mais sans couleur ni centralisation (pas personnalisé).

    Le code java de l'activité est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Sommaire extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_sommaire);
     
    		// Liste des chapitres
    		ListView list = (ListView) findViewById(R.id.idListeChapitre);
            }
     
    }
    Ma question est la suivante :

    Quesque je dois ajouter en Java pour pouvoir personnalisé ma liste ?

    Exemple : centraliser le texte, le colorer, espacer entre les items ...

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Points : 106
    Points
    106
    Par défaut
    Il y plusieurs tutos sur le web en français et ils sont facile a comprendre

    Par exemple :

    http://mickael-lt.developpez.com/tut...iser-listview/

    Bonne soirée

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Question bete... pourquoi mettre un LinearLayout autour du TextView ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Question bete... pourquoi mettre un LinearLayout autour du TextView ?
    Parceque j'ai lu dans les tuto qu'il faut crée un Layout independant pour les items pour pouvoir les personnalisé.

    J'ai modifié mon code Java comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    // Liste des chapitres
    		ListView list = (ListView) findViewById(R.id.idListeChapitre);
     
    		String[] sommaire = getResources().getStringArray(
    				R.array.titreChapitres);
     
    		// Création de la ArrayList qui nous permettra de remplire la listView
    		ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
     
    		// remplir la map
    		for (int i = 0; i < sommaire.length; i++) {
    			listItem.add(createChapitre("Chapitre", sommaire[i]));
    		}
     
    		// Création d'un SimpleAdapter qui se chargera de mettre les items
    		// présent dans notre list (listItem) dans la vue affichageitem
    		SimpleAdapter mSchedule = new SimpleAdapter(this,
    				listItem, R.layout.sommaire_items, new String[] { "titre" },
    				new int[] { R.id.label });
     
    		// On attribut à notre listView l'adapter que l'on vient de créer
    		list.setAdapter(mSchedule);
     
    ..................
     
    private HashMap<String, String> createChapitre(String key, String name) {
    	    HashMap<String, String> chapitre = new HashMap<String, String>();
    	    chapitre.put(key, name);
     
    	    return chapitre;
    	}
    Le bug que j'ai est que le texte des items ne s'affiche pas dans la ListView malgré que le nombre d'items est correct et en utilisant le debug j'ai bien vérifie que ma variable "listItem" est bien renseigné.

    Quelle est l'erreur que j'ai faite en java ?

    Merci

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    La tu passes un adapter avec des données genre "Chapitre"=> valeur
    et tu lui dis de mettre "titre" dans R.id.label
    Hors il n y' a pas de "titre" dans les données passées.

    Si il n'y a qu'un champ texte tout le temps (et que cela doit rester ainsi) il suffit d'utiliser un ArrayAdapter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String[] sommaire = getResources().getStringArray(R.array.titreChapitres);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,sommaire);
    list.setAdapter(adapter);
    Ma question concernant le "layout":
    Oui il faut une "ressource layout" personnalisée, mais rien ne dit que cette ressource doivent contenir un "layout", ce peut être un simple TextView...
    (ne pas confondre "ressource layout" et "layout view")
    D'ailleurs: android.R.layout.simple_list_item_1 ne contient qu'un TextView avec l'identifiant android.R.id.text1

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    J'ai enlevé le Layout et j'ai laissé que le TextView comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <TextView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dip"
        android:textIsSelectable="true"
        android:textSize="35sp"
        android:textStyle="italic" 
        android:layout_gravity="center"
        android:textColor="#030"
        >
    </TextView>
    J'obtiens cette affichage :



    Comme vous voyez les items non pas etaient centralisé ni coloré , ni taille changé ...

    Je me demande si un refresh et un clean project dans eclipse ne suffit , ou y'a d'autre chose a faire pour raffraichir les ressources du projet.... Ou un autre bou de code qui manque.


    Citation Envoyé par nicroman Voir le message
    La tu passes un adapter avec des données genre "Chapitre"=> valeur
    et tu lui dis de mettre "titre" dans R.id.label
    Hors il n y' a pas de "titre" dans les données passées.

    Si il n'y a qu'un champ texte tout le temps (et que cela doit rester ainsi) il suffit d'utiliser un ArrayAdapter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String[] sommaire = getResources().getStringArray(R.array.titreChapitres);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,sommaire);
    list.setAdapter(adapter);
    Ma question concernant le "layout":
    Oui il faut une "ressource layout" personnalisée, mais rien ne dit que cette ressource doivent contenir un "layout", ce peut être un simple TextView...
    (ne pas confondre "ressource layout" et "layout view")
    D'ailleurs: android.R.layout.simple_list_item_1 ne contient qu'un TextView avec l'identifiant android.R.id.text1

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Merci nicroman

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Personnaliser une listview windows mobile 6
    Par teabetabboris dans le forum C#
    Réponses: 1
    Dernier message: 19/07/2012, 10h03
  2. Personnaliser une ListView
    Par omarouen dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 02/04/2012, 13h56
  3. [Tutoriel] Personnaliser une ListView
    Par Djug dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 18/03/2011, 11h57
  4. Personnaliser une ListView en fonction des données ?
    Par Mythrandil dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 06/03/2009, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo