Get expanded group view of an ExpandableListView using onGroupExpand

thomaus picture thomaus · Jan 8, 2012 · Viewed 8.8k times · Source

I'm using an ExpandableListView and I'm unsuccessfully trying to move an image when expanding a group (the image being part of the group view).

Here is my code :

my_list_view.setOnGroupExpandListener(new OnGroupExpandListener()
{
    @Override
    public void onGroupExpand(int groupPosition)
    {
        Toast.makeText(getBaseContext(), "Group " + my_list_view.getGroupId(groupPosition), Toast.LENGTH_SHORT).show();
    }
});

Basically my problem is : how can I access the expanded Group view, when the only variable I can use is groupPosition?

Any you-should-create-a-custom-adapter-like response won't be accepted. I already tried that and it doesn't work for my issue. What I need is to listen the onGroupExpand event.

Answer

kevinpelgrims picture kevinpelgrims · Jan 24, 2012

What I eventually did is using the boolean isExpanded you get for free in getGroupView when you make a custom adapter. I was able to make things work the way I wanted with that, instead of doing it in the activity. If you save the context you get in the constructor, you can use that to get resources.

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
  if (isExpanded) {
    mContext.getResources().getDrawable(R.drawable.arrow)
    doSomething();
  }
  else {
    doSomethingElse();
  }
}

That's a lot easier than my other answer (which was a bit buggy anyway), so forget about that one :)