2013-01-19 3 views
0

Existe-t-il un moyen d'afficher une liste extensible et non extensible dans la même vue de liste? Ce que j'essaie de faire, c'est d'avoir une vue de liste extensible, mais pour les éléments qui n'ont pas de sous-éléments, et je ne veux pas montrer la flèche expand icon Comment puis-je faire cela? S'il vous plaît aider MerciComment afficher la liste extensible et la liste unique

EDIT: Tout ce que je veux est d'être capable de se cacher lorsque le groupe indicateur flèche est vide

Répondre

1

1) Fondamentalement, vous devez cacher "expand arrow" quand le groupe n'a pas d'enfant. Pour ce faire, définissez la propriété GroupIndicator sur null.

Ex: getExpandableListView().setGroupIndicator(null);

OU

2) en vérifiant que les enfants comptent vous pouvez définir l'indicateur comme le code ci-dessous,

if (getChildrenCount(groupPosition) == 0) { 
     indicator.setVisibility(View.INVISIBLE); 
    } else { 
     indicator.setVisibility(View.VISIBLE); 
     indicator.setImageResource(isExpanded ? R.drawable.list_group_expanded : R.drawable.list_group_closed); 
    } 

Pour plus d'informations sur le masquage indicateur groupe , vous pouvez vous référer this link.

OU

3) Créer un fichier group_indicator.xml dans le dossier drawable

<item android:state_empty="true" android:drawable="@android:color/transparent"></item> 
<item android:state_expanded="true" android:drawable="@drawable/arrowdown"></item> 
<item android:drawable="@drawable/arrowright"></item> 

Ensuite, définir de liste extensible comme le code ci-dessous,

<ExpandableListView 
     android:id="@+id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:groupIndicator="@drawable/group_indicator" 
     android:layout_weight="1" > 
    </ExpandableListView> 

Espérons que cela Résolvez votre problème.

+0

C'est en effet ce que je cherche. La dernière suggestion ne fonctionnera pas car elle est toujours à l'état vide et c'est une limitation par android (en fait, ils disent que c'est pour des raisons de performance) – Snake

+0

Cependant, dans votre première suggestion, le mettre à null le désactivera pour toute la liste – Snake

1

Oui. vous pouvez.

Utilisez BaseExpandableListAdapter

cette classe a des méthodes suivantes: getGroupTypeCount() et getGroupType (int groupPosition)

que vous devriez remplacer.

De manière simple, vous avez deux types d'articles. Par exemple Expandable (type 1) et Not expandable (type 2).

getGroupTypeCount() shoul return 2; Override getGroupView (int groupPosition, boolean isExpanded, Voir convertView, ViewGroup parent) Cette méthode vérifie le type de l'élément par position de l'élément. Si l'élément n'est pas extensible, vous devez générer View dont son aspect ne dépend pas s'il est développé ou non.

Je pense que c'est très simple.

+0

Merci, je ne suis pas sûr d'avoir compris le point autour de getgroupview, et un exemple serait vraiment utile – Snake

Questions connexes