Ccna final exam - java, php, javascript, ios, cshap all in one. This is a collaboratively edited question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
Tuesday, April 10, 2012
ExpandableListView - hide indicator for groups with no children
In an ExpandableListView , is there a way to hide the group indicator for groups with no children?
As mentioned in a different answer, since Android treats an un-expanded list group as empty, the icon is not drawn even if the group has children.
This link solved the problem for me: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Basically you have to set the default drawable as transparent, move the drawable into your group view as an ImageView and toggle the image in your adapter.
The android:groupIndicator property takes a state enabled drawable. That is, you can set different image for different states.
ReplyDeleteWhen the group has no children, the corresponding state is 'state_empty'
See these reference links:
http://developer.android.com/reference/android/widget/ExpandableListView.html#attr_android:groupIndicator
http://developer.android.com/reference/android/R.attr.html#state_empty
For state_empty, you can set a different image which is not confusing, or, simply use transparent color to display nothing...
Add this item in your stateful drawable along with others....
<item android:state_empty="true" android:drawable="@android:color/transparent"/>
So, your statelist can be like this:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_empty="true" android:drawable="@android:color/transparent"/>
<item android:state_expanded="true" android:drawable="@drawable/my_icon_max" />
<item android:drawable="@drawable/my_icon_min" />
</selector>
In case you are using an ExpandableListActivity, you can set the groupindicator in onCreate as follows:
getExpandableListView().setGroupIndicator(getResources().getDrawable(R.drawable.my_group_statelist));
I have tested this to be working.
As mentioned in a different answer, since Android treats an un-expanded list group as empty, the icon is not drawn even if the group has children.
ReplyDeleteThis link solved the problem for me:
http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Basically you have to set the default drawable as transparent, move the drawable into your group view as an ImageView and toggle the image in your adapter.