Jump to content
vince123

ExpandableListView sans enfant

Recommended Posts

Bonjour à tous,

j'utilise un ExpandableListView qui a 5 parents, je veux qu'un seul des parents (et toujours le même) aie un enfant !

chaque parent contient une flèche et un titre !

Lorsque je clique sur le parent (qui a l'enfant) la flèche pivote de 90° et l'enfant s'affiche (jusqu'ici aucun problème ;) )

Mais lorsque je clique sur les autres parents (qui n'ont pas d'enfant) ma flèche pivote quand même :/

Que faire pour m'en sortir sachant que j'ai les conditions suivantes .. :|

Pour mes flèches qui sont personnalisées je fais ça :

dans mon .xml de l'activity :

               android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:layout_below="@+id/relative"
              android:drawSelectorOnTop="false"
              android:groupIndicator="@drawable/expander_group"/>

dans drawable => j'ai mon expander_group.xml où je déclare mes 2 flèches :

       android:state_expanded="true"
       android:drawable="@drawable/expander_ic_maximized" />
       android:drawable="@drawable/expander_ic_minimized" />

Share this post


Link to post
Share on other sites

setOnGroupExpandListener

collapseGroup

:P

à mon avis, le Listener est appelé avant que la flèche ait pivoté

Share this post


Link to post
Share on other sites
setOnGroupExpandListener

collapseGroup

:P

à mon avis, le Listener est appelé avant que la flèche ait pivoté

oui tu as certainement raison

merci, je testes cela lundi :P

edit :

A quel moment, je lui dis que je veux que tel et tel groupe (parent) n'ai pas d'enfant :

       getExpandableListView().setOnGroupClickListener(new OnGroupClickListener() 
         {

           public boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) 
           {
               getExpandableListView().collapseGroup(groupPosition);
               return false;
             }
     });

Edited by vince123

Share this post


Link to post
Share on other sites

oui tu as certainement raison

merci, je testes cela lundi :P

edit :

A quel moment, je lui dis que je veux que tel et tel groupe (parent) n'ai pas d'enfant :

       getExpandableListView().setOnGroupClickListener(new OnGroupClickListener() 
         {

           public boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) 
           {
               getExpandableListView().collapseGroup(groupPosition);
               return false;
             }
     });

un petit up sur cette question

je ne vois pas où intervenir dans le code pour supprimer cette flêche, ici le code traite du clic pas de la constuction de la liste

as-tu résolu ton problème ?

Edited by superseed77

Share this post


Link to post
Share on other sites
setGroupIndicator(Drawable groupIndicator)
setGroupIndicator(Drawable groupIndicator)

c'est pour supprimer la fleche sur l'ensemble de la liste ? n'est-ce pas

pour un groupe vide j'imagine qu'il faut étendre ou modifier l'adapter :

SimpleExpandableListAdapter BaseExpandableListAdapter

et de faire quelque chose dans getGroupView

du genre if(getChildrenCount(groupPosition)==0)

mais comment ?

:mad:

ViewGroup

Share this post


Link to post
Share on other sites
Fais ton propre adapter, ca sera moins compliqué

As-tu un exemple stp

j'étends la classe SimpleExpandableListAdapter et j'implemente la methode quoi

où est-ce que je met l'état et l'indicator

Share this post


Link to post
Share on other sites

j'ai créé un expander_group.xml

<?xml version="1.0" encoding="utf-8"?>

android:state_expanded="true"

android:state_empty="false"

android:drawable="@drawable/arrow_li_parent_open" />

android:state_expanded="false"

android:drawable="@drawable/arrow_li_parent_close" />

android:state_expanded="false"

android:state_empty="true"

android:drawable="@drawable/empty"/>

android:state_expanded="true"

android:state_empty="true"

android:drawable="@drawable/empty"/>

et chargé ça dans mon ExpandableListActivity

Drawable icon = this.getResources().getDrawable(R.drawable.expander_group);

getExpandableListView().setGroupIndicator(icon);

j'ai bien mes icones mais

l'icone ne disparait que quend je clique sur le groupe vide

Allez les françophones de l'aide !

Share this post


Link to post
Share on other sites
non, je pensais plutôt utiliser le BaseAdapter, et faire tes vues à la main :P

Ok merci

excuse mais je suis encore débutant donc

BaseAdapter et vues à la main

je construit un LinearLayout que je sette dans getView du baseadapter ?

Share this post


Link to post
Share on other sites

Tu peux utiliser un layout xml, c'est mieux.

this.getLayoutInflater.inflate(R.layout.toto, null)

Mais je te conseille d'apprendre à te servir de BaseAdapter.

C'est super utile!

Il y a un tuto sur le site officiel.

Share this post


Link to post
Share on other sites

oui problème résolu :

gestion des clicks sur les parents !

1er parent => case 0 => démarrer intent...etc

2ème parent => pas de case 1 => montre les enfants

3eme parent, 4eme ...etc démarrer intent

 getExpandableListView().setOnGroupClickListener(new    OnGroupClickListener() 
       {
           public boolean onGroupClick(ExpandableListView parent,View v, final int groupPosition, long id) 
           {
              if(!(groupPosition == 1))
              {
                      switch (groupPosition)
                      {
                      case 0:
                              Intent x
                              break;

                      case 2:
                              Intent xx
                              break;

                      case 3:
                              Intent xxx
                              break;

                      case 4:
                                 Intent xxxx
                             break;   
                      }
                      return true;
              }
              else
              {
                  return false;
              }       
           }
       });

D'ailleurs voici la liste de mes enfants et j'aimerai mettre un string à la place de "go", comment faire ? :/ :

static final String shades[] = {


               "lightgrey"
             ,

             "go"

             ,

               "yellow 1"
             ,

               "indianred 1"
             ,

               "lightgrey",

           };

Edited by vince123

Share this post


Link to post
Share on other sites

En faisant comme ça par exemple :

string go = getString(R.string.go);

Share this post


Link to post
Share on other sites
En faisant comme ça par exemple :

string go = getString(R.string.go);

Akex, merci, mais c'est résolu ;) ;)

Share this post


Link to post
Share on other sites

Ben faut le dire alors :p

T'as un example ExpandableListView. Je sèche sur les examples :(.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...