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 :

Configurer l'affichage d'une ListView


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Configurer l'affichage d'une ListView
    Bonjour à tous,

    J'ai une listView avec différentes questions, chaque question a sa réponse dans une webview, mais une fois la webview ouverte on sait pas quelle question correspond à cette réponse.
    j'aimerai savoir comment faire pour afficher un rectangle sur l'élément sélectionné dans la ListView svp?

    Merci d'avance.

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 602
    Points : 18 517
    Points
    18 517
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux que lors du clique sur une ligne de ta ListView, la ligne soit modifié ?

    Bon déjà t’arrive à ouvrir une WebView à partir de ta ListView, ça veut dire que t'as un onClickListener ou un onItemClickListener quelque part.

    Ces listeners exécutent une méthode qui reçoit une View, la View peut être la ligne que tu viens de cliquer selon la méthode que tu utilises.
    Tu dois donc pouvoir modifier la ligne dans le onClick.

    Après j'ai pas compris précisement ce que tu veux faire.
    Mais si dans ta layout qui te sert à construire les lignes tu mets une vue en Visibility.GONE et que tu le rend visible dans onClick, lors du clique sur une ligne de la ListView tu devrais pouvoir afficher un rectangle.

    Mais je ne suis pas sûre que c'est ce que tu veux faire.

    Sinon met ta WebView dans un custom Dialog, comme ça lors de l'appuie sur une question la réponse arrivera comme une popup.
    Keith Flint 1969 - 2019

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Bonjour thierrybenji ,
    Merci d’avoir pris le temps de me répondre.

    Ce que j'aimerai faire, c'est mettre en surbrillance ou afficher un rectangle sur la ligne sélectionnée de la ListView, pour une meilleur visibilité Questions/réponse(webview).
    Et j'aimerai que l'effet reste affiché jusqu’à la fermeture de la WebView.

    Oui effectivement j'ai un setOnItemClickListener pour afficher ma webView.

    J’espère que c'est plus clair.

    Merci.

  4. #4
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 602
    Points : 18 517
    Points
    18 517
    Par défaut
    Pour moi ce n'est pas des masses plus clair...

    Tu veux modifier l'affichage d'une ligne de la ListView, ouvrir une WebView et quand tu quitte la WebView que la ligne soit toujours modifié ?

    Il il y a plusieurs façon de faire ça.

    Il faut juste mémoriser la position de la ligne de la question.
    Et dans le getView de l'Adapter modifier cette ligne.
    Keith Flint 1969 - 2019

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Quand on a une listView, et on clique si une ligne la couleur de cette ligne change, mais la couleur disparait aussitôt.
    Ce que je veux c'est que cette couleur qui change lors du clique reste affiché tant qu'on clique pas sur une autre ligne.
    Comme ça la ligne qui correspond à la réponse est la ligne avec un background différent.

  6. #6
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 602
    Points : 18 517
    Points
    18 517
    Par défaut
    Fait des screenshots ou un schéma parce que là je vois toujours pas.

    T'as une ListView dans laquelle chaque ligne est une question, c'est bien ça ?
    La réponse est dans une WebView, mais comment ça ce passe exactement ?

    Tu veux que la ligne sélectionné reste d'une couleur spécial ?
    C'est peut être jouable avec un selector.

    Mais sinon tu stock quelque part quel ligne tu as sélectionné.
    Et dans getView tu change la couleur de fond de la ligne sélectionné.

    Le truc que tu veux faire, c'est bien cliquer sur une ligne et que cette ligne change de couleur et reste d'une couleur différente tant que tu ne cliques pas sur une autre ligne ?

    Edit :
    Si ça se trouve dans ton listener il faut juste faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    view.setSelected(true);
    Et avoir un selector avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Selected Item -->
        <item android:state_selected="true"
            android:drawable="@color/list_pressed" />
     
        <!-- Default Item -->
        <item android:state_selected="false"
            android:drawable="@android:color/list_default" />
    </selector>
    Keith Flint 1969 - 2019

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Le truc que tu veux faire, c'est bien cliquer sur une ligne et que cette ligne change de couleur et reste d'une couleur différente tant que tu ne cliques pas sur une autre ligne ?
    Oui c'est bien ce que je veux faire.

    Voila j'ai testé ce que tu m'as dit sur un petit programme, mais je n'ai pas l'effet souhaité.
    Est ce que c'est bien comme ça :

    voila le code :

    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
    33
    34
    35
    36
    37
    public class HighlightActivity extends Activity {
        /** Called when the activity is first created. */
     
        ListView lvListe;
     
        @Override
     
        public void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
     
        setContentView(R.layout.main);
     
        lvListe = (ListView)findViewById(R.id.lvListe);
     
        String[] listeStrings = {"France","Allemagne","Suisse"};
     
        lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listeStrings));
        //lvListe.setSelected(true);
     
        lvListe.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     
        	public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        		lvListe.setSelected(true);
        		Object item = lvListe.getItemAtPosition(position);
        		Context context = getApplicationContext();
        	   	int duration = Toast.LENGTH_SHORT;
     
        		Toast toast = Toast.makeText(context, (CharSequence) item, duration);
        		toast.show();
     
        	}
     
     
        });
        }
    }
    main.xml:

    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
    <?xml version="1.0" encoding="utf-8"?>
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     
    >
     
    <ListView
    android:id="@+id/lvListe"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/item">
     
    </ListView>
    item.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Selected Item -->
        <item android:state_selected="true"
            android:drawable="@color/list_pressed"/>"
     
        <!-- Default Item -->
        <item android:state_selected="false"
            android:drawable="@color/list_default" />
    </selector>
    et res/color
    list_default.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="utf-8"?>
     
     <color name="list_default">#0000ff</color>
    list_pressed.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="utf-8"?>
     
     <color name="list_pressed">#ff0000</color>

  8. #8
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 602
    Points : 18 517
    Points
    18 517
    Par défaut
    Dans le onItemClick t'as pas mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arg1.setSelected(true);
    Au lieu de :
    onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)

    Mettez :
    onItemClick(AdapterView<?> parent, View view, int position, long id)

    Sinon on comprend rien.
    Keith Flint 1969 - 2019

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Le set selected ne changera en rien le fait que ton item n'est plus coloré après une selection, c'est une volonté des développeurs d'Android de ne pas pouvoir mettre un effet permanent de selection d'item sur une ListView. Pour eux si tu veux faire ca tu intègre une checkbox a tes views. Cependant il reste possible de faire ce que tu veux.
    Pour ma part lorsque je sélectionne un item je modifie le background de ma View ( méthode setBackgroundColor() classique ), je stocke cette View, puis si je clique sur un autre item alors je refait un setBackground sur ma View pour lui rendre la couleur initiale.

    C'est une solution qui fonctionne certe surement pas conseillée puisqu'elle va à l'encontre de la volonté des développeur d'Android.

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

Discussions similaires

  1. Problème d'affichage dans une ListView
    Par tabbabi dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 10/08/2011, 12h58
  2. Force close après l'affichage d'une ListView
    Par Cuillere dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 27/08/2010, 14h28
  3. Affichage d'une listView
    Par sicilianadev dans le forum C#
    Réponses: 0
    Dernier message: 24/05/2009, 14h47
  4. Affichage d'une ListView
    Par astrolus dans le forum Windows Forms
    Réponses: 27
    Dernier message: 01/05/2008, 18h42
  5. Réponses: 8
    Dernier message: 12/05/2006, 14h04

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