ExpandableListView e listener de clique longo bem feitos

Usar ExpandableListView com OnItemLongClickListener pode ser complicado se você precisar determinar a posição correta do filho.

Aqui está um pequeno trecho para economizar seu tempo:

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
ExpandableListView listView = (ExpandableListView) parent;
long pos = listView.getExpandableListPosition(position);

// get type and correct positions
int itemType = ExpandableListView.getPackedPositionType(pos);
int groupPos = ExpandableListView.getPackedPositionGroup(pos);
int childPos = ExpandableListView.getPackedPositionChild(pos);

// if child is long-clicked
if (itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
Task task = (Task) adapter.getChild(groupPos, childPos);
...

Espero que ajude 🙂