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 :

Découverte et utilisation du composant ListView [Tutoriel]


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut Découverte et utilisation du composant ListView
    Bonjour,

    Je vous propose un tutoriel sur présentation le composant ListView sur Android.
    Vous y trouverez les premiers concepts à maitriser pour bien utiliser et comprendre les composants gérant les listes d'items.

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

    N'hésitez pas à laisser vos commentaires ici.
    Merci d'avance.

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    Merci pour ce beau tutoriel Android .
    Voici mes commentaires.

    Présentation
    De manière générale indiquer les pré-requis pour ne pas recevoir des questions auxquelles tu n'as pas forcément envie de répondre.
    Donner également les outils que tu utilises : ici Eclipse + le SDK*Android.


    II-A. Affichage avec une ListActivity

    2.1 est la version de la plateforme.
    La version du SDK*est le no API que tu retrouves dans la description de la cible.
    Travailler sur la version 2.1 c bien mais aussi pas bien car je ne connais qu'un seul téléphone en dehors du Nexus qui l'héberge (Motorola MileStone). Le plus répandu doit être le 1.5 voir 1.6. C'est triste mais les fabricants sont fainéants pour la procédure de maj.

    "Une chose importante à ce niveau là est l'identifiant du composant ListView : "@android:id/list". Ici on ne peut pas mettre un identifiant personnel comme on peut le faire pour les autres composants,"

    Tu pourrais donner un ou deux exemples de composant avec un ID*"personnalisé" ?

    http://developer.android.com/guide/t...rces-i18n.html
    Le '@' indique que nous allons utiliser une 'référence' de ressource.
    android: indique qu'il s'agit d'une ressource faisant partie du package android.
    id : indique qu'il s'agit d'une ressource de type identifiant.
    list : c'est la référénce vers cet identifiant.

    En une phrase on demande à Android de nous générer un ID*pour cette ressource qui sera référencé par list.


    Initialisation mStrings.
    Je suis tout jeune en java ( < 1 sem), mais qu'est-ce que le contenu de mStrings peut-être modifié ?
    l'utilisation des mots clés static et final n'est-elle pas nécessaire ?


    Est-ce toi qui a crée le layout simple_list_item_1 ?
    Je pensais que ce serait main puisque tu as crée le listview dedans ?

    II-B. Affichage sans ListActivity
    Après avoir passer les données au composant listView il faut indiquer que c'est cette vue qu'il faut afficher ?
    Bon je pourrais toujours fouiller dans les sources, mais bon tu l'expliques dans le premier exemple et pas celui-là.

    Pour le reste, ben je suis en train de le lire plus profondément ....

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Par défaut
    Merci pour ce tuto !

    Par contre, j'aurais une petite question :

    La prochaine méthode permet de prévenir tous les listeners en même temps pour diffuser une information :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void sendListener(Personne item, int position) {
        for(int i = mListListener.size()-1; i >= 0; i--) {
        	mListListener.get(i).onClickNom(item, position);
        }
    }
    Pourquoi prévenir tous les listeners en mêmes temps ? Car cette fonction va déclencher le OnClickNom pour chaque item ?

  4. #4
    Membre expérimenté

    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Bonjour, et merci à vous deux pour vos retours.
    Alors je vais répondre dans l'ordre :
    pourquoi utiliser la 2.1
    Dans le cadre de cet exemple, la version du SDK était vraiment facultative. Comme tu pourras le remarquer, il s'agit ici d'un exemple simple permettant d'appréhender certain mécanisme d'Android.
    Et puis, si je voulais est titilleux, je te dirais que depuis peu, la version 2.1 est la plus répandu (cf http://developer.android.com/resourc...-versions.html )

    exemple d'id personnel
    Il y a un exemple un peu plus bas, donc j'ai pas jugé nécessaire de faire un comparatif là, mais c'est vrai, pourquoi pas. Si j'ai le temps dans les prochains jours, je ferais une rapide mise à jours.

    De même, je ne me suis pas étalé sur une vraie description de l'id pour la liste car je n'ai pas trouvé de description simple et basique, sans aller plus loin. Peut être que prochainement je ferais un autre tutoriel pour reprendre les concept sur Android. A voir si c'est beaucoup demandé.

    La tableau de String doit-il est en "const final"
    Oui, je pense qu'il aurait été plus judicieux de le typer ainsi. Je ferais la correction. Mais là, c'est plus de l'optimisation de code qu'autre chose. (enfin je crois ^^)

    Est-ce toi qui a crée le layout simple_list_item_1 ?
    Je le précise dans le paragraphe suivant : "Le deuxième paramètre "android.R.layout.simple_list_item_1" permet d'indiquer la présentation utilisée pour les items de notre liste. Ici il s'agit d'une présentation simple pour les chaines de caractères incluse dans le SDK. " C'est donc un layout fourni avec le SDK (tel que l'indique le android.R), ce n'est pas moi qui l'ai créé.

    Après avoir passer les données au composant listView il faut indiquer que c'est cette vue qu'il faut afficher ?
    Bon je pourrais toujours fouiller dans les sources, mais bon tu l'expliques dans le premier exemple et pas celui-là.
    Oui, j'ai pas de meilleur réponse Vu que je l'explique déjà plus haut, je me suis permis de penser qu'il était inutile de le répéter ici.

    Pour le reste, ben je suis en train de le lire plus profondément ....
    Pas de soucis, n'hésites pas si tu as d'autres remarques.


    Pourquoi prévenir tous les listeners en mêmes temps ? Car cette fonction va déclencher le OnClickNom pour chaque item ?
    Oui ça va prévenir tous les listeners qui veulent savoir si il y a un click sur la liste, que y'a eu un click sur la liste
    Ici dans l'exemple, notre Activité principale s'ajoute en tant que listener sur la liste.
    Ainsi si on clique sur un item de la liste, notre activité principale peut traiter l'information et en faire ce qu'elle veut.
    Mais on peut également imaginer que pour un autre type de besoin, on ai besoin deux listeners pour écouter ce qu'il se passe sur la liste. Et là pareil, à chaque sélection d'un item, nos listeners seront au courant de la sélection.
    Je sais pas si c'est plus claire ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Par défaut
    Oui et non.

    Je débute en java et en android et je pense que j'ai du mal à assimiler / visualiser certains objets. L'application que je développe actuellement utilise une listview, donc ton tuto tombe à pic

    Je pensais que la fonction serait déclenché autant de fois qu'il y a d'item dans la listview

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Par défaut
    Bonsoir,

    J'ai branché le setOnLongClickListener() et le setOnClickListener() directement sur mon layoutItem pour que le click soit déclenché sur tout l'item voulu.

    Tout fonctionne très bien mais une fois le click branché, l'item clické ne se sélectionne plus (la surbrillance bleu par exemple que l'on a par défaut ne n'apparaît plus).

    Est ce que quelqu'un sait comment faire pour avoir toujours une surbrillance dès qu'un item est sélectionné avec le doigt sur l'écran tactile ?

    En cherchant un peu j'ai vu que l'on pouvait appeler un évènement, de cette manière je peux changer la couleur de fond (mais c'est moche, il y a plus l'effet de surbrillance ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    llLayoutItem.setFocusable(false);
    llLayoutItem.setFocusableInTouchMode(true);
     
    llLayoutItem.setOnFocusChangeListener(new OnFocusChangeListener(){
    	public void onFocusChange(View v, boolean hasFocus)
    	{
    		v.setBackgroundColor(hasFocus ? Color.RED : Color.BLACK);
    	}
    });
    Merci d'avance

Discussions similaires

  1. [SGBD][ADO] Utilisation des composants ADO
    Par Teb dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 22/08/2005, 15h33
  2. utilisation des composants d'aide à la décision
    Par karim2005 dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/07/2005, 13h36
  3. Utilisation du composant TDBImage
    Par kkv dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/03/2005, 17h41
  4. [][Timer] Créer un Timer sans utiliser le composant
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/10/2003, 11h04

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